我一直在尝试使用 asyncio 同时运行 10 个不同的循环任务。所有 10 个任务在其循环中调用“asyncio.create_task()”。我无法对所有这些函数使用“asyncio.run()”,因为此函数会阻塞其调用的线程,直到任务完成。所以我想我可以简单地通过使用“asyncio.run()”调用一个函数来绕过这个问题,然后在该函数内通过“asyncio.create_task()”调用我的10个循环函数。这10个循环函数确实被调用,但它们本身不能使用“asyncio.create_task()”。关于如何解决这个问题有什么建议吗?
这是我为演示我的问题而编写的基础代码:
async def task2():
print("Task 2 was called")
async def task1():
print("Task 1 was called")
asyncio.create_task(task2())
async def main():
print("Main was called")
asyncio.create_task(task1())
asyncio.run(main())
它打印:
Main was called
Task 1 was called
任何想法或建议,我们将不胜感激:D
asyncio.create_task()
返回一个 Task
对象,它是一个 Awaitable
。
您应该使用
await asyncio.create_task(task1())
而不是 asyncio.create_task(task1())