Я запускаю несколько терминалов, cmds
используя потоки в Python (не смейтесь надо мной, на то есть причина).
Иногда они cmds
превышают доступную память, и мне приходится увеличивать размер подкачки, чтобы избежать ошибок «Недостаточно памяти» (OOA).
Мой вопрос:В общем, будет ли моя (или любая другая) программа выполняться быстрее при уменьшении количества потоков и увеличении пространства подкачки или при увеличении количества потоков и уменьшении пространства подкачки (или есть «золотая середина»)?.
решение1
Иногда эти команды превышают доступную память, и мне приходится увеличивать размер подкачки, чтобы избежать ошибок «Недостаточно памяти» (OOA).
Если место подкачки заканчивается (или приходится увеличивать его размер), это говорит о том, что вы запускаете слишком много процессов одновременно.
Мой вопрос: как правило, моя (или любая другая) программа будет выполняться быстрее, если уменьшить количество потоков и увеличить пространство подкачки или увеличить количество потоков и уменьшить пространство подкачки (или есть «золотая середина»)?
Эти два варианта на самом деле не имеют смысла. Если вы увеличите количество потоков (и, следовательно, требуемую ОЗУ) и в то же время уменьшите размер подкачки, у вас, вероятно, закончится память (хранящаяся как в ОЗУ, так и в подкачке), что приведет к завершению процессов вашей операционной системой и/или сбою выделения памяти.
При исчерпании оперативной памяти ваша операционная система освобождает часть памяти, записывая ее на диск (пространство подкачки). Это относительно трудоемкая задача, поэтому вам действительно следует избегать использования большего объема памяти, чем доступно в вашей оперативной памяти.
Я бы ограничил количество процессов, чтобы не исчерпать оперативную память, чтобы не записывать память на диск. Проверьте доступную память psutil.virtual_memory().available
перед запуском другого процесса. Наличие 1 ГБ перед запуском другого процесса кажется разумным.
Вам следует провести сравнительный анализ — замерить время, необходимое для завершения различных исходных файлов с разными значениями максимального количества процессов и минимального объема памяти, прежде чем начинать новый.