Python的3个主要缺点及其解决方案,除java和C之外。总的来说,Python一直是教学、学习编程和软件开发的绝佳起点,它可以成为任何技术堆栈中有价值的部分。不幸的是,这样的流行也暴露了Python的缺点,最显着和众所周知的缺点是这三个:计算性能、打包和可执行程序生成以及项目管理。虽然这三个缺点不是很致命,但是相对于Julia、Nim、Rust和Go等处于上升通道的其他语言,Python的劣势会越来越明显。下面给大家说说Python程序员面临的这三个缺点,以及Python及其第三方工具开发者提出的解决这些缺点的方法。劣势一:Python多线程和速度Python整体性能较慢,有限的线程和多处理能力是其未来发展的主要障碍。Python长期以来一直重视编程的易用性而不是运行时速度。当这么多性能密集型任务是通过使用用C或C++编写的高速外部库(例如Numpy和Numba)在Python中完成时,你会发现Python对编程易用性的强调也是一个不错的选择。但尽管如此,Python开箱即用的性能速度仍然落后于其他语言,例如Nim和Julia,它们具有同样简单的语法,但可以编译成机器码,具有更高的性能优势。Python无法充分利用多核处理器的问题长期以来一直是个问题。它确实有线程,但它的线程仅限于单个内核。虽然Python可以使用多个进程,但是调度和同步这些子进程的结果并不总是一个有效的解决方案。目前没有单一的、自上而下的整体解决方案来解决Python的性能问题,但我们有一系列提速的Python。移动。例如:使用PyPy解释器而不是官方解释器。PyPy可以将Python代码编译成机器码。库,但它们始终只适用于长期运行的服务,而不适用于可以打包带走的应用程序。Cython,Cython可以将Python+C混合编码的.pyx脚本转换成C代码。这个项目最初是为科学和数值计算而设计的,但它可以在大多数情况下使用。Numba与Numba和Cython类似,主要用于科学计算。Mypyc,还在开发中,会将用mypyc类型装饰器装饰的代码转换成C.Python的优化发行版,例如Intel为特殊处理器及其特殊数学运算而专门编译的版本。但是,虽然它可以显着加快一些计算,但并不能加快整体的计算速度。如果你是高手,也可以尝试摆脱GIL(GlobalInterpreterLock)。Python的多线程之所以是假的,是因为GIL的存在:它用来保证Python在同一时间只能有一个线程运行。所以理论上,如果去掉GIL,就可以进行多线程操作,可以提高性能。还有一个正在进行的项目通过重构Python内部C接口的实现来解决许多速度改进问题。一个不那么令人困惑的界面将带来许多性能改进。劣势二:Python打包和可执行文件Python诞生30年后,Python仍然没有很好的生成可执行文件(exe程序等)的方法,只能通过第三方工具来解决。而且使用起来比较麻烦。解决方案pyinstaller可以打包使用numpy等很多库,但是必须要保持这些库的版本一致,太难受了。而且它生成的程序比较大,因为import语句里面的内容都封装在一起了。另一种方法也在研究中,即PyOxidizer项目使用Rust语言生成嵌入Python的二进制文件,但距离成为真正的解决方案还有很长的路要走。劣势三:Python的包管理、项目管理当你想把一个本地比较复杂的Python项目移植到服务器上的时候,你就知道Python项目管理是多么痛苦了。需要不断安装项目依赖,依赖可能会有依赖,就像俄罗斯套娃一样,恨不得直接把键盘吃掉。要解决这类问题,Python的开发团队当然需要出手,他们需要提供一套优雅的迁移工具。不过,根据PEP518,他们朝这个方向迈出了几步,Python的构建依赖项已合并到pyproject.toml文件格式中(替换setup.py、requirements.txt、setup.cfg、MANIFEST.in和新添加的Pipfile)当然没办法,用诗歌依赖管理工具,它可以很方便的把你需要的依赖打包在一起。文章到此结束!如果你看完后觉得有所收获,记得点击阅读,让更多的朋友看到??这篇文章!如果还有其他小问题,可以在下方窗口留言!Python实战宝典(pythondict.com)不仅仅是一个集合。欢迎关注公众号:Python实战宝典
