Умная многопроцессорность в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Умная многопроцессорность в Python

Сообщение Anonymous »

У меня есть функцияprocess_file, которая принимает имя файла в качестве входных данных, обрабатывает входные данные, а затем сохраняет выходные данные.
Я использую multiprocessing.Pool.map()< /code>, чтобы ускорить процесс за счет распараллеливания ядер. Обычно я используюprocesses=os.cpu_count(), чтобы иметь по одному процессу на ядро. Пока все хорошо.
Однако эти файлы иногда представляют собой очень большие сжатые данные, а это означает, что иногда загрузка os.cpu_count() этих файлов занимает больше памяти, чем машина имеет, и в этот момент либо процесс выходит из строя, либо машина зависает.
Для любого конкретного набора файлов я могу предположить подходящее значение для параметра процессов многопроцессорной обработки .Pool, но это требует ручного вмешательства, которого лучше избегать. А если (а это часто бывает) есть несколько больших файлов и много маленьких, это может привести к значительному замедлению скорости обработки.
Есть ли библиотеки, которые с этим справляются? разумным способом - т.е. запускать достаточное количество процессов, чтобы использовать большую часть, но не всю память?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»