Я замечаю, что когда я запускаю программы Python, сильно зависящие от процессора, они используют только одно ядро. Можно ли назначить несколько ядер программе при ее запуске?
Назначение нескольких ядер программе Python
Ответы (3)
Вы должны программировать явно для нескольких ядер. См. параметры симметричной многопроцессорной обработки на этой странице, чтобы узнать о многих решениях для параллельной обработки в Python. Parallel Python — хороший выбор, если вам неинтересно сравнивать варианты, посмотрите примеры здесь.
Однако некоторые проблемы не могут использовать преимущества нескольких ядер. Подумайте, как вы могли бы быстрее взбежать по лестнице с помощью трех друзей. Не произойдет!
Интересно, почему никто еще не упомянул GIL (Global Interpreter Lock) CPython. В основном это означает, что несколько потоков внутри одного интерпретатора Python не могут использовать мощность нескольких ядер, потому что многие операции защищены глобальной блокировкой для обеспечения потокобезопасности. Это относится только к небольшому количеству приложений — приложениям, привязанным к процессору. Для получения дополнительной информации просто найдите термин «GIL», по нему уже есть много вопросов (например, вот тот, например).
Этот ответ, конечно, предполагает, что вы на самом деле используете несколько потоков, иначе вы все равно не сможете использовать несколько ядер (многопроцессорность может быть другой возможностью).
Если какую-либо часть вашей задачи можно выполнить параллельно, вам следует изучить многопроцессорный модуль.