10.5.3.3 在指定时间内调度一个回调
还可以安排在指定时间内调度一个调用。实现这个目的的循环依赖于一个单调时钟,而不是墙上时钟时间,以确保"now"时间绝对不会逆转。要为一个调度回调选择时间,必须使用循环的time()方法从这个时钟内部状态开始。
import asyncio
import time
def callback(n,loop):
print('callback {} invoked at {}'.format(n,loop.time()))
async def main(loop):
now = loop.time()
print('clock time:{}'.format(time.time()))
print('loop time:{}'.format(now))
print('registering callbacks')
loop.call_at(now + 0.2,callback,1,loop)
loop.call_at(now + 0.1,callback,2,loop)
loop.call_soon(callback,3,loop)
await asyncio.sleep(1)
event_loop = asyncio.get_event_loop()
try:
print('entering event loop')
event_loop.run_until_complete(main(event_loop))
finally:
print('closing event loop')
event_loop.close()
需要注意,循环的时间与time.time()返回的值并不一致。
运行结果: