#multiprocessing #python-3.6
Вопрос:
Я запускаю два процесса с многопроцессорной обработкой на python, например
from multiprocessing import Pool
pool = Pool(processes=2)
pool.apply_async(func1, (args))
pool.apply_async(func2, (args))
pool.close()
pool.join()
функции func1() и func2() большую часть времени независимы и иногда взаимодействуют с файлами. func1() требует больше ресурсов(количество процессоров), а func2-меньше. Поэтому я хочу назначить больше процессора процессу func1 и меньше процессу func2. Однако я прочитал документ о многопроцессорности и не могу найти возможность установить номер процессора для каждого процесса.
Есть ли какие-то хорошие решения?
Другой вопрос: как отслеживать, сколько процессоров использует каждый процесс? Распределяет ли многопроцессорность количество процессоров одинаково, например, 50-50, 33-33-33, 25-25-25-25?
Комментарии:
1. «Есть ли какие-нибудь хорошие решения?» не на python. Это также очень зависит от операционной системы… в Windows вы искали бы что-то подобное . Я думаю, что вы также можете быть немного сбиты с толку тем, как работает многопроцессорность в этом случае: каждый процесс выполняется строго на одном ядре одновременно, несмотря ни на что. Единственное исключение из этого правила-если вы используете библиотеки, использующие многопоточность, и выпускаете GIL, и в этом случае ОС будет обрабатывать нагрузку на основе своего алгоритма планирования
2. Получение таких сведений, как текущая загрузка процессора (и использование памяти), обычно выполняется с
psutil
помощью библиотеки