运行等待功能的 Jupyter 笔记本

Ali*_*ice 1 python

在Jupyter notebook 上学习协程和任务后

运行以下代码

import asyncio
async def main():
    print('learn')
    await asyncio.sleep(1)
    print('Jupyter')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但是,它在 Ipython 上正常工作

在此处输入图片说明

pyl*_*ang 5

这是Jupyter 更高版本的已知问题。安装nest_asyncio作为解决方法

> pip install nest_asyncio
Run Code Online (Sandbox Code Playgroud)

代码

import asyncio

import nest_asyncio


nest_asyncio.apply()


async def main():
    print("Learn")
    await asyncio.sleep(1)
    print("Jupyter")


asyncio.run(main())
# 'Learn'
# 'Jupyter'
Run Code Online (Sandbox Code Playgroud)

TLDR ; 在笔记本中运行 asyncio 与 Tornado 5.0 在后台运行的现有事件循环冲突。第二种选择是降级notebook到依赖于旧版 Tornado 的版本。