У меня есть список файлов с интенсивным вычислением, которые я запускаю с использованием модуля подпроцесса Python. Идея состоит в том, чтобы использовать Popen
, а не что-то вроде check_call
, чтобы быстрее просмотреть список. Однако, когда список больше, чем, скажем, 4 или 5 элементов на компьютерах, программа уничтожает все ресурсы компьютеров, что делает его непригодным для использования до его завершения. Мой вопрос: есть ли удобный способ ограничить количество процессов, которые открывается моей программой сразу?Ограничение количества процессов, выполняемых одновременно подпроцессом. Poken
Код, который я использую, прост, но является частью более крупной программы, поэтому вставка всего кода, необходимого для его запуска, невозможна.
def run_fast(self):
'''
self.cps_dct is a nested dictionary dct[index1][index2]=filename
CopasiSE is a program for simulating mathematical models using the terminal/cmd
'''
for i in self.cps_dct.keys():
for j in self.cps_dct[i]:
subprocess.Popen('CopasiSE {}'.format(self.cps_dct[i][j]))
return self.cps_dct
благодаря
Вы ищете 'multiprocessing.Pool'? https://docs.python.org/2/library/multiprocessing.html –