分享

IPython 7.0发布:Async REPL

 首家i55ryzehof 2018-09-29

今天,我们很高兴地宣布IPython 7.0的发布。这个强大的Python交互终端已经远远超越了Python默认的交互终端,它拥有先进的自动补全,语法高亮等。它是jupyter的核心,已经被数百万人使用,希望这里面也有你。这是放弃Python2支持后的第二个主要版本。

不用支持Python2,让我们能够充分地利用起Python3的新特性,进而为IPython带来前所未有的新能力。我们始终鼓励各类库的维护者和用户了解Python2即将不被支持,并学习如何逐渐停止支持Python2,同时不会破坏现有Python2支持库的安装。

作为IPython的开发者和维护者,只需要支持一个Python版本让我腾出了大量的时间。我不用再写分条件的import,我可以依赖于最新的类型标注的特性....这使我的工作变得更加高效。由于IPython的开发都是志愿者在业余时间完成的,所以任何的效率提升都弥足珍贵。

我们这个版本的一个核心特性就是让IPython能够使用Python3.5+的新关键字async和await。当然还有很多其他的改进,你可以阅读详细的发布说明。

GIF

IPython7.0中await协程的例子

你可以直接在IPython交互终端中使用async/await,也可以在notebook中使用。绝大多数时候,应该都不会有问题。把IPython升级到7以上版本,IPykernel升级到5以上,你就可以愉快地使用这些关键字了。

Python世界中的Async

在现在的Python生态系统中,软件包习惯于围绕AsyncIO做标准。即便是很有经验的程序员,有时也会觉得AsyncIO太复杂了:这个复杂度一定程度上来源于它要支持很多旧的异步项目,比如Tornado和Twisted。当然这也是它的强大之处,一个事件循环解决所有问题。

做一个很小的异步任务也需要你去学习AsyncIO,然后写不少冗杂的样板代码。对于交互式探索来说,这样就太麻烦了。这使得人们不愿意用AsyncIO代码做实验。

在没有集成async支持前,在Python的交互终端中实验一个小的异步任务

就像Raymond Hettinger所说的:“一定有更好的办法”。

IPython的AsyncIO集成

经过几个月的努力(实际上这项工作两年前就开始了),并且很多人参与了贡献,现在你可以直接在IPython中使用await了,结果就会像你预期的那样。

异步事件循环应该能够自动启动

有了这项集成,你就不需要导入什么,也不需要了解asyncio的细节了。你现在可以专注于业务逻辑了。

你唯一需要记住的就是:如果你用的是一个async函数,那么你需要通过await得到结果。

我们希望这样能让人们探索异步编程时更加轻松。当然这不会让你的代码神奇地变得更快,或者自动地并行运行,它只是让你写起来更容易并且更好理解。

Notebook中的Async

如果你是一个Jupyter用户,你很可能会使用一个Notebook界面,并且通过这个界面和ipykernel交互。

在Notebook中使用AsyncIO

为了让Notebook中能够运行async代码,我们费了很大的工夫。当然这项工作的大头是在IPython中的,IPykernel中只是在一些特殊使用场景下能保证不会出错。你需要将IPython升级到7.0以上版本,并将ipykernel升级到5以上才能使用上面的特性。如果你使用pip,那么命令应该是:$ pip install IPython ipykernel --update。升级之后,async应该在所有支持Jupyter协议的前端中都可以使用了,包括经典的Notebook、JupyterLab、Hydrogen、nteract desktop和nteract web。

未来的改进

据我所知,这是第一个智能支持Async的Python交互终端,而且由于像Trio/Curio这样的库还很年轻,因此可能有大量的使用场景我们还没有考虑到。我们鼓励你来告诉我们你的使用场景,你做了哪些尝试,以及哪部分没有合理地运行。我们还有一些新特性要做(关于async的高级功能、Tab补全、后台任务等),所以我们欢迎新的贡献者。

译者:诗书塞外,译文有删减,选取了主要内容

英文原文:https://blog./ipython-7-0-async-repl-a35ce050f7f7

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多