Я написал программу python для запуска параллельных процессов (16) с использованием пула для обработки некоторых файлов. В начале прогона количество процессов поддерживается на уровне 16 до тех пор, пока почти все файлы не будут обработаны. Затем по некоторым причинам, которые я не понимаю, когда осталось только несколько файлов, за один раз выполняется только один процесс, который делает время обработки намного дольше, чем необходимо. Не могли бы вы помочь с этим?Пул многопроцессорности Python количество заданий неверно
ответ
Python перед запуском процесса, который вы указали в applyasync/asyncmap пула, назначает каждому работнику часть работы.
Например, скажем, что у вас есть 8 файлов для обработки, и вы запускаете пул с 4 рабочими.
Перед началом обработки файла каждому работнику будет назначено два конкретных файла. Это означает, что если какой-то рабочий заканчивает свою работу раньше других, просто «переломит» и не начнет помогать другим.
Итак, что я могу сделать, чтобы всегда запускать максимальное количество процессов (<= 16)? Потому что, когда осталось всего несколько файлов, только одно задание запускается одновременно, один за другим, что делает общее время чрезвычайно длинным. Благодаря! – james0011
Всегда максимальное количество процессов. Но для получения дополнительной информации я должен был бы попросить пример кода. Я не могу ответить больше, не имея конкретного кода. – Xxxo
Привет, как я писал в ответ на hagello, код протекает очень просто: пул multiprocessing.Pool (процессы = 16), то pool.map (...) используется для сопоставления функции со списком аргументов, которые это список файлов для обработки. Благодаря! – james0011
Force map()
использовать chunksize 1 вместо того, чтобы гадать лучшее значение само по себе, эс .:
pool = Pool(16)
pool.map(func, iterable, 1)
Это должно (теоретически) гарантирует лучшее распределение нагрузки между работниками до конца входные данные.
См here
- 1. Пул многопроцессорности Python застрял
- 2. Получить количество работников из процесса Пул в модуле многопроцессорности python
- 3. Пул многопроцессорности Python не создает достаточно процессов
- 4. Пул многопроцессорности Python висит при соединении?
- 5. Пул многопроцессорности Python, join; не ожидая продолжения?
- 6. Пул многопроцессорности Python висит на карте вызова
- 7. Пул многопроцессорности Python замерзает без причины
- 8. Пул многопроцессорности Python с общими данными
- 9. Пул многопроцессорности Python для параллельной обработки
- 10. Rails пул фоновых заданий
- 11. Ограничение процесса пула многопроцессорности Python
- 12. профилирование пула многопроцессорности python
- 13. Как использовать пул многопроцессорности python в непрерывном цикле
- 14. пул многопроцессорности python, чтобы один рабочий выполнял другую функцию
- 15. Байт-код Python, сгенерированный при многопроцессорности Пул называется
- 16. Номер процесса многопроцессорности Python
- 17. задача планирования многопроцессорности python
- 18. Цель пула в многопроцессорности python
- 19. Максимальное количество заданий в TPL?
- 20. Количество товаров Magento неверно?
- 21. Возврат в многопроцессорности - Python
- 22. Тестирование модуля Python неверно неверно
- 23. Пул потоков и архитектура очереди заданий?
- 24. проблема блокировки многопроцессорности python
- 25. Тайм-аут многопроцессорности Python
- 26. Ошибка трассировки многопроцессорности Python
- 27. Пример Python и многопроцессорности
- 28. Функции многопроцессорности Python
- 29. Инициализация подкласса многопроцессорности Python
- 30. Производительность многопроцессорности Python
Без какого-либо кода и без какой-либо информации о вашей стратегии планирования будет довольно трудно, чтобы помочь вам. Посмотрите http://stackoverflow.com/help/mcve. – hagello
Вероятно, каждый процесс имеет специальную нагрузку при запуске. он останавливается, когда закончит. –
Привет, код идет очень просто: пул multiprocessing.Pool (процессы = 16), тогда pool.map (...) используется для сопоставления функции со списком аргументов. – james0011