Python语言的3个主要缺点及其解决方法
本篇内容主要讲解“Python语言的3个主要缺点及其解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python语言的3个主要缺点及其解决方法”吧!
成都创新互联专注于企业成都营销网站建设、网站重做改版、镇巴网站定制设计、自适应品牌网站建设、H5高端网站建设、商城网站定制开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为镇巴等各大城市提供网站开发制作服务。
缺点一:Python 多线程和速度
Python 整体性能缓慢,有限的线程和多处理能力是其未来发展的主要障碍。
Python长期以来一直重视编程的易用性而不是运行时的速度。当通过使用C或C++编写的高速外部库(如Numpy和Numba)在Python中完成如此多的性能密集型任务时,你会发现Python重视编程的易用性也是一种不错的选择。但是尽管如此,Python的开箱即用的性能速度依然落后于其他语言,比如说具有同样简单语法的Nim和Julia,却可以被编译为机器代码,具有更高的性能优势。
Python无法全面利用多核处理器是其长久以来的问题,它确实具有线程功能,但它的线程功能是局限于单个核心的。虽然Python可以使用多进程,但是调度和同步这些子进程的结果并不总是有效
解决方案
目前没有单一,自上而下的整体解决方案来解决Python的性能问题,不过我们有一系列加速Python的举措。比如说:
使用PyPy解释器替代官方解释器,PyPy能够将Python代码编译成机器代码,它在仅仅使用Python自带的模块的代码中效果最好,不过现在也可以适用于如numpy这样的流行的库,但是其始终只适合于长期运行的服务,而不是能打包带走的应用程序。
Cython,Cython能将Python+C混合编码的.pyx脚本转化为C代码。该项目最初是为科学和数值计算而设计的,但它可以在大多数情况下使用。
Numba,Numba和Cython类似,主要用于科学计算。
Mypyc,是现在仍在开发的项目,它会将用mypyc类型装饰器装饰的代码转化为C.
优化的Python发行版,比如英特尔针对特殊的处理器和其特殊的数学运算所开发的专门编译版本。不过尽管它能够显著加快部分运算速度,但不能加快整体的运算速度。
如果你是高手,你还能尝试摆脱一下GIL(全局解释器锁) 之所以Python的多线程是假的,就是因为GIL的存在:它用来保证Python同时只能有一个线程运行。因此从理论上来讲,如果你摆脱了GIL,就能进行多线程运算,可以提高性能。
还有一个正在进行的项目能够解决许多速度提升的问题,即重构Python内部C接口的实现,一个不混乱的接口可以使得许多性能的改进成为可能。
缺点二:Python 打包和可执行文件
即使在Python诞生30年后,Python依然没有很好的方法来生成可执行文件(exe程序等)我们只能通过第三方工具解决。而且用起来比较麻烦。
解决方案
pyinstaller 可以打包使用许多如numpy这样的库,但是它必须和这些库保持版本一致,这可太难受了。而且它生成的程序比较大,因为把import语句里所有的内容都封装在一起了。
还有种方法也是正在研究中,那就是PyOxidizer项目使用Rust语言生成嵌入Python的二进制文件,不过距离成为真正的解决方案还有一段发展路程要走。
缺点三:Python 包管理、项目管理
当你想将一个本地比较复杂的Python工程移植到服务器上的时候,你就知道Python项目管理是有多蛋疼了你需要不断地安装项目依赖,依赖的依赖可能还有依赖,就像俄罗斯俄罗斯套娃一样,恨不得直接把键盘吃了。
解决方案
这种问题,当然需要Python的开发团队出手了,需要他们提供一套优雅的迁移工具。
不过他们已经朝这个方向前进几步了, 根据PEP 518,Python的构建依赖项被合并为pyproject.toml文件格式(取代了setup.py, requirements.txt, setup.cfg, MANIFEST.in 以及最新加入的Pipfile)
当然也不是没有办法,使用poetry依赖管理工具,它能够很方便地将你所需要的依赖打包在一起。
到此,相信大家对“Python语言的3个主要缺点及其解决方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
当前名称:Python语言的3个主要缺点及其解决方法
URL网址:http://scyanting.com/article/pojjho.html