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