У меня есть функцияprocess_file, которая принимает имя файла в качестве входных данных, обрабатывает входные данные, а затем сохраняет выходные данные.
Я использую multiprocessing.Pool.map()< /code>, чтобы ускорить процесс за счет распараллеливания ядер. Обычно я используюprocesses=os.cpu_count(), чтобы иметь по одному процессу на ядро. Пока все хорошо.
Однако эти файлы иногда представляют собой очень большие сжатые данные, а это означает, что иногда загрузка os.cpu_count() этих файлов занимает больше памяти, чем машина имеет, и в этот момент либо процесс выходит из строя, либо машина зависает.
Для любого конкретного набора файлов я могу предположить подходящее значение для параметра процессов многопроцессорной обработки .Pool, но это требует ручного вмешательства, которого лучше избегать. А если (а это часто бывает) есть несколько больших файлов и много маленьких, это может привести к значительному замедлению скорости обработки.
Есть ли библиотеки, которые с этим справляются? разумным способом - т.е. запускать достаточное количество процессов, чтобы использовать большую часть, но не всю память?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-python
Умная многопроцессорность в Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
C# «Умная ссылка»/«Дескрипторы», позволяющие немедленно «уничтожить» объект.
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Умная CSS-маска с использованием градиента и динамического радиуса границы
Anonymous » » в форуме CSS - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-