2013-11-20 3 views
-1

Я знаю, что PHP поддерживает сейчас Threads и я читаю here Многопоточность Python не лучше, чем muli-threading в java, поскольку у Python есть некоторые проблемы с GIL.Многопоточный PHP и многопоточный Python

Итак, я полагал, что многопоточность Python также не будет лучше, чем muli-threading в php. Поскольку PHP использует тот же стиль, что и в java, для создания потоков, кроме того php использует pthread для реализации потоков, который является широкой популярной библиотекой.

Что вы предлагаете?

+0

Вы запрашиваете рекомендации по языку? Как всегда, ответ: «используйте то, что наиболее подходит для вашего проекта». Если у вас есть потоки, не связанные с GIL, тогда не используйте Python. – Kevin

+0

Как Java относится к этому вопросу? –

+0

, если поток python не лучше java, поэтому я предположил, что потоки python также не лучше php. –

ответ

-2

У Python действительно есть глобальная блокировка для интерпретатора. Это означает, что вы не можете использовать потоки для распространения одной программы на несколько ядер на одном компьютере. Но запуск одной и той же программы на нескольких ядрах - это не то, что потоки были созданы в любом случае, и сделать это непросто. Тем не менее, вы можете использовать модуль multiprocessing для распространения программы по нескольким ядрам, поэтому это не имеет большого значения.

Я не знаю, имеет ли PHP GIL или нет, но, как вы видите выше, это действительно не важно.

Даже если потоки PHP были немного лучше, чем Pythons, это неправильная причина выбора PHP. На самом деле практически любая причина, кроме «У меня нет выбора», является плохой причиной. Ref1Ref2

+0

Неверно, что «вы не можете использовать потоки» для использования нескольких ядер. GIL означает, что в основном коде интерпретатора CPython одновременно может выполняться не два ядра. Тем не менее, вы по-прежнему будете видеть некоторые преимущества для некоторых рабочих нагрузок даже при использовании GIL с потоками. Однако, как вы говорите, многопроцессорный модуль (в стандартных библиотеках начиная с версии 2.6) является лучшим способом. Обратите внимание, что некоторые C/двоичные расширения для CPython (например, Numpy) записываются для выпуска GIL и имеют собственную поддержку многопоточности. Таким образом, некоторые вычислительные нагрузки могут также выиграть от нескольких ядер. –

Смежные вопросы