技术开发 频道

基于Python路线图的四大修复,Get到你的期望点了吗?

  【IT168 评论】随着Python语言的越来越火热,它自身的某些缺点也在渐渐暴露出来。自动化、机器学习和微服务等领域对Python需求的不断增加,逐渐推动了语言的优化。近日,Python核心开发团队发布了基于Python路线图的四大修复点。

基于Python路线图的四大修复

  缩短Python的启动时间

  此次优化将减少CPython解释器启动时间放在了首位,Python的启动时间一直都是一个令人头疼的问题。Python3.7版本比Python2.7慢2.3-2.8倍,Perl 5和PHP 7比Python 3快5到10倍。

  由于Python 3启动特别慢,所以很多用户都没有升级,仍继续使用Python 2。但随着2020年Python 2的将被淘汰,减少启动时间问题迫在眉睫。一种语言的启动时间越短,容器接受命令的速度就越快,语言才能发挥它最大的功能。

  加速Python的命名元组

  想要加速运行时间,最普遍的方法就是更快的实现命名元组。Python中的元组是不可变的对象列表(如整数或者字符串)通过其索引位置 ——元素0,元素1等访问的。 Python的标准库中提供的命名元组允许通过点属性访问这些元素,例如,用address.zip_code代替address[3],可使代码读写更加容易。

基于Python路线图的四大修复

  目前被命名的元组实现被认为是Python慢启动罪魁祸首之一。因此,Python开发者Guido van Rossum已经发布命令——在CPython中对命名的元组进行有效的优化,缩短CPython的启动时间,并为所有使用CPython的第三方应用程序提供便利。

  重构CPython的内部API

  CPython目前最大的局限是C语言API的向后兼容性。在理论上,CPython可以被重写以全面改进性能,但代价是打破与大量软件的兼容性。

  CPython的内部API的重构可能会带来另一些好处,比如这样以来CPython的代码会更容易理解、使用,吸引大量初学者等。

  甩掉Python的GIL包袱

  如果说Python有一个最需要解决的问题,那就是全局解释器锁。GIL确保了CPython使用每个对象的内存访问都是“线程安全”,也就是说,一个Python对象一次只能使用一个线程,这就意味着CPython实际上是单线程的。而多线程、CPU绑定的操作需要通过C扩展或CPython的多个实例来处理。以前,这个限制还能被用户接受,但是随着CPU时钟速度变平,内核激增,Python有可能会输给本地处理多线程的语言。

基于Python路线图的四大修复

  当然,许多Python的主线应用程序,如机器学习和统计,都是通过不受GIL约束的C代码来加速的,但这个问题却越来越难以忽视。而且,一旦甩掉了这个包袱,Python本机解决方案将在平台上更加便携、跨应用程序更加灵活、更容易被开发人员使用。

  GDI开发人员Larry Hastings 指出,最新的GIL实验“ Gilectomy” 表明,仅仅删除GIL并不是最完美的解决方法,可以删除GIL,但只能以现有Python包(主要是C扩展)的向后兼容性为代价。任何删除GIL的尝试都需要向后兼容C语言的API。

  现阶段删除GIL还处于实验阶段,但一旦完成了CPython API的修改,GIL很有可能会被马上移除。

0
相关文章