我不同意Python在多处理应用程序方面并不比Java好。
首先,据我所知,我假设OP使用“better”来表示“更快的代码执行”。
我患有“速度怪胎”综合症,可能是因为我有C/ASM的背景,所以我花了相当长的时间来弄清“Python是不是很慢?”问题。
答案很简单吗?”可能是这样的。”这里有几个要点:
1)对于多线程应用程序,Python将对任何没有类似GIL的语言不利。GIL是CPython中Python虚拟机的产物,而不是Python语言本身。一些Python虚拟机,如Jython、IronPython等,没有GIL。
2)在多进程应用程序中,GIL并不真正适用,因此您现在可以开始利用Python代码的更快执行,而GIL在很大程度上不受影响。我强烈建议,如果您想编写既需要速度又需要并发性的大型Python代码,那么您应该学习多处理,并可能学习ZMQ/0MQ来进行消息传递。
3)不管GIL是什么,Java在许多方面都显示出比Python更快的代码执行速度。这是由于Python处理内存中对象的方式存在本机差异:Python使用Dict来存储对象等的属性。我不想分散注意力并深入研究这些领域,但我通常可以说,Python可以做的一些“整洁”的事情是以速度为代价的。同样重要的是要知道,如果这会给你造成太高的速度惩罚,那么有办法避免默认行为。
4)据我所知,Java的一些速度优势是由于Java虚拟机比Python进行了更多的优化。一旦消除了幕后内存/对象工作量的差异,Java通常仍然可以胜过Python。是因为Java比Python更受关注吗?我不确定,有足够的资金,我觉得CPython可以更快。
我要说的是,我已经决定百分之百地使用Python来开发新代码。
不要陷入过早的优化陷阱,记住你可以随时调用C代码。使代码工作良好,使其可维护,然后在应用程序的速度不足以满足您的需要时开始优化。