asyncio事件循环不仅可以运行任务,还可以运行回调函数、定时器和IO操作。以下是一个简单的示例代码,展示了如何在asyncio事件循环中同时运行任务和回调函数:
import asyncio
async def my_task():
print('Running my_task')
await asyncio.sleep(1)
print('Task completed')
def callback():
print('Running callback')
async def main():
loop = asyncio.get_running_loop()
# 运行任务
task = loop.create_task(my_task())
# 添加回调函数
loop.call_soon(callback)
# 等待任务完成
await task
asyncio.run(main())
在上面的示例中,my_task
是一个异步任务,它会在事件循环中运行。callback
是一个普通函数,通过loop.call_soon
方法添加到事件循环中,并在任务完成后运行。
运行上述代码,会得到以下输出:
Running my_task
Task completed
Running callback
可以看到,事件循环首先运行了my_task
任务,然后在任务完成后运行了callback
回调函数。这表明asyncio事件循环可以同时运行任务和回调函数。