有没有办法在Jupyter单元格中直接调用等待?

时间:2018-06-13 09:31:32

标签: python python-3.x async-await jupyter-notebook python-asyncio

我已经看到过在某些环境中使用此类代码的示例(例如https://github.com/ipython/ipykernel/pull/323)。

但对我来说,到目前为止只提出SyntaxError

enter image description here

更新

我知道它纯粹" python它不会工作,aware应该仅在async def中使用。

我也知道在jupyter中它可能(见上面的链接)所以引擎能够做到这一点。问题是如何摆脱这个错误信息。

UPDATE2 直接呼叫等待的想法是什么:

我正在使用异步库。在当前版本的jupyter中,很难获得协程的返回值:

enter image description here 我所做的最好的事情是全局变量:

enter image description here

这里的一个问题是res尚未在单元格25中准备就绪。我必须等到我看到"完成",然后使用另一个单元格中的值。

另一个问题是直接从单元格调用协程与另一个协程之间的语义不对称,这在编辑器中编写脚本时非常无关紧要,但对于repl非常重要。

现在考虑一下:

enter image description here

2 个答案:

答案 0 :(得分:1)

知道了!

enter image description here

这需要安装IPython的开发版本(https://github.com/ipython/ipython/pull/11155)。

这是:

pip install git+https://github.com/minrk/ipython.git@more-await-repl#egg=ipython
pip install git+https://github.com/minrk/ipykernel.git@run-async#egg=ipykernel

答案 1 :(得分:-1)

尝试这样的事情。

import asyncio

async def myfun():
    await asyncio.sleep(1)
    return 5

现在在你喜欢的地方使用myfun()。