python - 有没有办法直接在 Jupyter 单元中调用 await ?
问题描述
我已经看到在某些环境中工作的此类代码的示例(例如https://github.com/ipython/ipykernel/pull/323)。
但对我来说,这只是SyntaxError
到目前为止:
更新:
我知道在“纯”python 中它不起作用,await
应该async def
只在 's 中使用。
我也知道在 jupyter 中是可能的(见上面的链接),所以引擎能够做到这一点。问题是如何摆脱这个错误信息。
Update2 直接调用await是什么思路:
我正在使用异步库。在当前版本的 jupyter 中,很难获得协程的返回值:
这里的问题之一res
是在单元 25 中还没有准备好。我必须等到我看到“完成”,然后使用另一个单元格中的值。
另一个问题是直接从单元调用协程和从另一个协程调用协程之间的语义不对称,这在编辑器中编写脚本时非常不相关,但对于 repl 来说非常重要。
现在考虑一下:
解决方案
知道了!
这需要安装 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
更新:
正如@ack 所指出的,现在这个功能存在于 pypi 上的最新版本 ipykernel 中。
推荐阅读
- python - 什么是socket.SOL_TCP
- google-bigquery - BigQuery - 使用两个字段的 REGEXP EXTRACT
- powershell - 获取每个子文件夹的文件列表 | 每个文件列表都放在 txt 文件中,该文件放在它描述和命名的文件夹中,就像这个文件夹
- xcode - 需要将旧版 Safari 扩展程序转换为 Safari 应用程序扩展程序。在 Xcode 上搜索文档、开始步骤和教程
- signalr - 没有从 wcf 服务更新到 SignalR Web 应用程序
- html - 把一个圆圈切成两半
- python - 将 CSV 列拆分为两列
- react-native - 无法读取未定义的属性“导航”
- serilog - Serilog ForContext 未按预期工作
- html - 无法将背景图像大小调整为响应式视图