协程实现定时器
摘要:使用python里面的协程实现定时器,重点关注add_done_callback的用法。
本来使用协程实现一个定时器没什么可讲的,但是我发现竟然可以在future处于done状态时通过add_done_callback方法添加回调函数,而且回调函数还能被触发。下面两个代码的作用一样....区别自己看
代码一:
import asyncio
async def delay(time):
await asyncio.sleep(time)
async def timer(time, function):
while True:
future = asyncio.ensure_future(delay(time))
await future
future.add_done_callback(function)
def func(future):
print("done")
if __name__ == '__main__':
asyncio.run(timer(2, func))
代码二:
import asyncio
async def delay(time):
await asyncio.sleep(time)
async def timer(time, function):
while True:
future = asyncio.ensure_future(delay(time))
future.add_done_callback(function)
await future
def func(future):
print("done")
if __name__ == '__main__':
asyncio.run(timer(2, func))
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。