网上列举了不少例子, 基本都是使用 asyncio.sleep()来模拟, 但基本没说这个是如何实现非阻塞的, 也有说普通函数加个 async 就是协程函数了, 然后试了一下使用普通函数加个 async 关键字替代 asyncio.sleep, 行不通, 并不是同时执行的. 能简单给个例子不用官方的 sleep 是怎么实现这个协程的吗?
from datetime import datetime
import asyncio
async def add(n):
print(datetime.now().strftime('%H:%M:%S.%f'))
count = 0
for i in range(n):
count += i
print(datetime.now().strftime('%H:%M:%S.%f'))
return count
async def fun(n):
res = await add(n)
print(f'res = {res}')
loop = asyncio.get_event_loop()
tasks = [fun(20000000), fun(30000000)]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.