Многопроцессорная обработка Python: ограничьте количество используемых ядер

Это - мое мнение, и я держал бы пари на предположение, что большинство людей согласится, что открытые методы должны пойти сначала. Один из базовых принципов OO - то, что Вам не придется заботиться о реализации. Просто рассмотрение открытых методов должно сказать Вам все, что необходимо знать для использования класса.

7
задан abalter 15 October 2009 в 21:04
поделиться

4 ответа

Вероятно, глупое наблюдение, пожалуйста, простите меня за мою неопытность в Python.

Но ваш опрос цикла while для завершенных задач не засыпает и все время потребляет одно ядро, не это?

Еще одна вещь, на которую следует обратить внимание, это то, что если ваши задачи связаны с вводом-выводом, вы должны настроить M на количество параллельных дисков (?), которые у вас есть ... если они смонтированы по NFS на другой машине, вы могли бы потенциально иметь M> L.

g'luck!

1
ответ дан 7 December 2019 в 05:25
поделиться

На моей двухъядерной машине соблюдается общее количество процессов, т.е. если я выполняю

p = Pool(1)

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

2
ответ дан 7 December 2019 в 05:25
поделиться

Если вы работаете в Linux, используйте набор задач при запуске программы

Дочерний элемент, созданный с помощью fork (2), наследует маску сродства ЦП своего родителя. Маска сродства сохраняется при выполнении execve (2).

TASKSET (1)
Руководство пользователя Linux
ЗАДАЧИ (1)

НАЗВАНИЕ набор задач - получить или установить привязку к процессору процесса

ОБЗОР набор задач [параметры] маска команда [аргумент] ... набор задач [параметры] -p [маска] pid

ОПИСАНИЕ набор задач используется для установки или получения привязки к процессору работающего процесса с учетом его PID или запустить новый КОМАНДА с заданным соответствием ЦП. Сходство ЦП - это планировщик свойство, которое "связывает" процесс с данный набор процессоров в системе. Планировщик Linux учитывает учитывая сходство с процессором и процесс не буду работать на любых других процессорах. Обратите внимание, что планировщик Linux также поддерживает естественную привязку к процессору: планировщик пытается сохранить процессы на одном и том же процессоре столько времени, сколько возможно для причины производительности. Следовательно, принуждение определенное соответствие ЦП полезно только в определенных приложениях.

Сходство ЦП представлено как битовая маска с самым низким порядком бит, соответствующий первому логичный ЦП и бит высшего порядка, соответствующий последнему логическому ЦП. Не все процессоры могут существовать в данной системе. Тем не менее, маска может указывать больше процессоров, чем имеется. Извлеченный маска будет отражать только те биты, которые кор- отвечать процессорам физически в системе. Если неверная маска данный (т.е. тот, который соответствует нет допустимые процессоры в текущей системе) возвращается ошибка. В маски обычно даются в шестнадцатеричный.

2
ответ дан 7 December 2019 в 05:25
поделиться

You might want to look into the following package:

http://pypi.python.org/pypi/affinity

It is a package that uses sched_setaffinity and sched _getaffinity.

The drawback is that it is highly Linux-specific.

2
ответ дан 7 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: