Я бы не согласился с тем, что Python не лучше, чем Java для многопроцессорных приложений.
Во-первых, я предполагаю, что ОП, насколько я могу судить, использует слово «лучше», что означает «более быстрое выполнение кода».
Я страдаю от синдрома «скоростного безумца», возможно, из-за того, что пришел из C / ASM, поэтому я потратил много времени, чтобы понять, «медленно ли Python?» вопрос.
Простой ответ на этот вопрос? "Может быть." Вот несколько важных моментов:
1) В многопоточном приложении Python будет иметь недостаток перед любым языком, который не имеет ничего похожего на GIL. GIL - это артефакт виртуальной машины Python в CPython, а не сам язык Python. Некоторые виртуальные машины Python, такие как Jython, IronPython и т. Д., Не имеют GIL.
2) В многопроцессорном приложении GIL на самом деле не применяется, и, таким образом, теперь вы можете приступить к более быстрому выполнению кода Python, по большей части GIL. Я настоятельно рекомендую, если вы хотите написать большой код на Python, который требует как скорости, так и параллелизма, вы узнаете о многопроцессорности и, возможно, ZMQ / 0MQ для передачи сообщений.
3) Независимо от GIL, Java отображает более быстрое выполнение кода, чем Python во многих областях. Это связано с собственными различиями в том, как Python обрабатывает объекты в памяти:
Ряд функций Python создают копии объектов в памяти, а не модифицируют их (см. http://www.skymind.com/~ocrow/python_string/ для примеров)
Python использует Dict для хранения атрибутов объектов и т. Д. Я не хочу отвлекать внимание и углубляться в эти области, но в целом я могу сказать, что некоторые из «изящных» вещей, которые Python может сделать, достигают скорость стоимость. Также важно знать, что есть способы обойти поведение по умолчанию, если это приводит к слишком высокому штрафу за скорость.
4) Насколько я могу судить, некоторые преимущества Java в скорости связаны с большей оптимизацией Java VM по сравнению с Python. Как только вы устраняете различия в том, как много закулисной работы с памятью / объектами выполняется, Java все еще может побеждать Python. Это потому, что у Java больше внимания, чем у Python? Я не уверен, с достаточным финансированием я чувствую, что CPython мог бы быть быстрее.
Я скажу, что я решил использовать Python почти на 100% в будущем с новым кодом.
Не попадайтесь в ловушку преждевременной оптимизации и помните, что вы всегда можете вызвать C-код в крайнем случае. Сделайте ваш код работоспособным, сделайте его обслуживаемым, затем начните оптимизировать, когда скорость приложения не будет достаточно быстрой для ваших нужд.
Интересные тесты:
http://benchmarksgame.alioth.debian.org/u64/python.php
Дополнительную информацию о проблемах со скоростью Python можно найти здесь:
http://www.infoworld.com/d/application-development/van-rossum-python-not-too-slow-188715