原因
因为asyncio设计上不允许事件循环被嵌套,这就造成了一个问题:当一个事件循环已经在运行,就不能再运行任务并等待结果。如果这样做就会报错:“RuntimeError: This event loop is already running”
。
当在Google Colab或者Jupyter上运行TFF官方教程代码state = iterative_process.initialize()
就会产生这个问题。
解决方法
- 安装
nest_asyncio
库
nest_asyncio
库就是专门为解决这个问题而诞生的!
可以直接在从notebook中安装!pip install --quiet --upgrade --user nest_asyncio
,也可以在终端pip
、conda
安装 - 使用
nest_asyncio
去修复asyncio
在代码中添加import nest_asyncio nest_asyncio.apply()
想了解更多信息可以去 nest_asyncio 看看!