【发布时间】:2018-10-24 22:06:53
【问题描述】:
我想编写一个程序,利用call_later 来表示稍后发生的某事(或某事),这些程序本身可能会添加更多要调用的例程,然后向程序发出信号以运行,直到没有任何剩余可运行.例如,我可以执行以下操作:
import asyncio
START_RATE = 1
async def say_hi(who):
print(f'hello {who}')
async def call_later(t, func, *params):
await asyncio.sleep(t)
await func(*params)
def run():
# Let's go!
incr = START_RATE
loop = asyncio.get_event_loop()
tasks = []
for x in range(5):
wait_delta = 5 - x
tasks.append(
call_later(incr * wait_delta, say_hi, x)
)
loop.run_until_complete(asyncio.gather(*tasks))
run()
但是你会注意到call_later 是一个定制的协程。
是否可以使用事件循环的call_later,但以某种方式检查事件循环或等待所有待处理回调的完成?
【问题讨论】:
标签: python timer python-asyncio