【发布时间】:2021-12-29 10:27:04
【问题描述】:
我在 python 中有一个慢速函数,我想异步运行。这个慢函数基本上是一个很长的循环,如下所示:
def slow(slowness):
print(f"Slow loop {slowness}")
for i in range(int(slowness * 1e8)):
i
print(f"Wait for loop {slowness} finished")
if __name__ == '__main__':
slow(1)
slow(0.5)
slow(0.1)
我正在尝试使用以下代码运行异步版本:
import asyncio
async def slow(slowness):
print(f"Slow loop {slowness}")
for i in range(int(slowness * 1e8)):
i
print(f"Wait for loop {slowness} finished")
async def main() -> None:
await asyncio.gather(
slow(1),
slow(0.5),
slow(0.1)
)
if __name__ == '__main__':
asyncio.run(main())
我希望slowness=0.1 的函数首先完成执行,但我看到的常规执行似乎是同步的。我做错了什么?
我看到以下输出:
Waiting for 1 seconds...
Wait for 1 seconds finished
Waiting for 0.5 seconds...
Wait for 0.5 seconds finished
Waiting for 0.1 seconds...
Wait for 0.1 seconds finished
我希望是这样的:
Waiting for 1 seconds...
Waiting for 0.5 seconds...
Waiting for 0.1 seconds...
Wait for 0.1 seconds finished
Wait for 0.5 seconds finished
Wait for 1 seconds finished
【问题讨论】:
标签: python asynchronous python-asyncio