У меня есть n файлы для анализа отдельно и независимо друг от друга с тем же сценарием Python analysis.py
. В сценарии оболочек wrapper.py
, я перебираю эти файлы и вызвать analysis.py
как отдельный процесс с subprocess.Popen
:python, подпроцесс: запуск нового процесса, когда один (в группе) завершен
for a_file in all_files:
command = "python analysis.py %s" % a_file
analysis_process = subprocess.Popen(
shlex.split(command),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
analysis_process.wait()
Теперь я хотел бы использовать все к ядер процессора моей машины, чтобы скорость весь анализ. Есть ли способ всегда иметь k-1
запущенных процессов, пока есть файлы для анализа?
[ 'multiprocessing.Pool'] (https://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers);) –
ли 'analy.py' тот же скрипт? –
да! это так же просто, как в приведенном выше примере. Я посмотрю на multiprocessing.Pool, спасибо :) –