Python异步-使用不同的";暂停"



我试图弄清楚如何用异步运行多个无限循环-每个循环都有自己的延迟:

import asyncio
async def do_something(delay, message):
await asyncio.sleep(delay)
print(message)
def main():
loop = asyncio.get_event_loop()
loop.create_task(do_something(1, "delay equals 1"))  
loop.create_task(do_something(3, "delay equals 3"))  
loop.run_forever()
if __name__ == '__main__':
try:
main()
except Exception as f:
print('main error: ', f)

它返回:

delay equals 1
delay equals 3

我怀疑它会回来:

delay equals 1
delay equals 1
delay equals 1
delay equals 3
delay equals 1
delay equals 1
delay equals 3

(或类似(我应该如何修改这个简单的例程?


解决方案

async def do_something(delay, message):
while True:
await asyncio.sleep(delay)
print(message)

没有理由让一个简单的任务永远循环。

根据您最终想要做的事情,您可以在异步函数中添加一个while True:,或者让它们在最后安排另一个任务。

最新更新