繁体   English   中英

Python Asyncio - 以不同的“暂停”运行多个无限循环

[英]Python Asyncio - running multiple infinite loops with different "pauses"

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

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: :,或者让它们在最后安排另一个任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM