我正在尝试学习如何使用 asyncio 在谷歌合作实验室中运行异步代码。但是,我在返回结果时遇到问题。
我为自己设置的一个例子如下:
async def main():
task = asyncio.create_task(other_function())
print("1")
await asyncio.sleep(1)
print("2")
await task
async def other_function():
print('A')
await asyncio.sleep(1)
print('B')
asyncio.run(main())
这会导致错误“无法从正在运行的事件循环中调用 asyncio.run()”
我确定,由于 google co-labs 运行其事件循环的方式,不需要 asyncio.run() ,并尝试在删除这部分的情况下重新运行代码。
但是,通过将底行更改为 main() 而不是 asyncio.run(main()) ,输出为“
理论上输出应该是
1
A
2
B
到目前为止,我还没有找到解决方案。任何正确方向的帮助或指示将不胜感激。
在 google-colab 中,只需将
await main()
放在末尾即可:
import asyncio
async def main():
task = asyncio.create_task(other_function())
print("1")
await asyncio.sleep(1)
print("2")
await task
async def other_function():
print('A')
await asyncio.sleep(1)
print('B')
await main()
输出:
1
A
2
B