2009-10-16 3 views
1

Это скорее вопрос стиля. Для процессов с привязкой к процессору, которые действительно приносят пользу для нескольких ядер, обычно вы используете модуль мультипроцессорности или используете потоки с интерпретатором, который не имеет GIL? Я использовал библиотеку многопроцессорности только слегка, но также не имею никакого опыта ни с чем, кроме CPython. Мне любопытно, какой предпочтительный подход и если нужно использовать другой интерпретатор, какой именно.Python на многопроцессорных машинах: многопроцессорный или не-GIL-интерпретатор

+0

Какова ваша рабочая нагрузка? С точки зрения «стиля» (который, по-видимому, * очень важен для программистов python), я не думаю, что многие сторонники python предпочли бы не-GIL-интерпретатор. – BobbyShaftoe

ответ

3

я не вижу «стиль» аргумент, чтобы быть здесь, так или иначе - как multiprocessing в CPython 2.6 и threading в (например) текущей версии Jython и IronPython, пусть вам код очень похож пути (и стили ;-). Итак, я бы выбрал на основе очень «жестких» соображений - что такое производительность, как с каждым выбором (если я , так что CPU-привязанный, чтобы извлечь выгоду из нескольких ядер, тогда производительность , очевидно, первостепенной важности), могу ли я с серьезной пользой использовать любую библиотеку, которая имеет только CPython (например, numpy) или, может быть, что-то другое, это только JVM- или .NET- и т. д.

1

Взгляните на Parallel Python (www.parallelpython.com). Я привык к тому, чтобы хорошо разделить работу между процессорами на четырехъядерном ящике. Он даже поддерживает кластеры!

+0

В идеале вы бы сделали некоторый бенчмаркинг, чтобы определить, сколько процессов Python на процессор может обрабатываться без ухудшения производительности. Я бы начал с трех процессов Python на ядро ​​и работал вверх. –