Python Asyncio - 运行 具有不同 "pauses" 的多个无限循环
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)
它returns:
delay equals 1
delay equals 3
我怀疑它 return:
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:
,或者让它们在最后安排另一个任务。
我正在尝试弄清楚如何使用 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)
它returns:
delay equals 1
delay equals 3
我怀疑它 return:
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:
,或者让它们在最后安排另一个任务。