Назначение нескольких ядер программе Python

Я замечаю, что когда я запускаю программы Python, сильно зависящие от процессора, они используют только одно ядро. Можно ли назначить несколько ядер программе при ее запуске?


person Harpal    schedule 23.12.2010    source источник


Ответы (3)


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

Однако некоторые проблемы не могут использовать преимущества нескольких ядер. Подумайте, как вы могли бы быстрее взбежать по лестнице с помощью трех друзей. Не произойдет!

person moinudin    schedule 23.12.2010

Интересно, почему никто еще не упомянул GIL (Global Interpreter Lock) CPython. В основном это означает, что несколько потоков внутри одного интерпретатора Python не могут использовать мощность нескольких ядер, потому что многие операции защищены глобальной блокировкой для обеспечения потокобезопасности. Это относится только к небольшому количеству приложений — приложениям, привязанным к процессору. Для получения дополнительной информации просто найдите термин «GIL», по нему уже есть много вопросов (например, вот тот, например).

Этот ответ, конечно, предполагает, что вы на самом деле используете несколько потоков, иначе вы все равно не сможете использовать несколько ядер (многопроцессорность может быть другой возможностью).

person AndiDog    schedule 23.12.2010

Если какую-либо часть вашей задачи можно выполнить параллельно, вам следует изучить многопроцессорный модуль.

person JimB    schedule 23.12.2010