У меня 28 входных файлов и 28 доступных процессоров.Я написал скрипт на python, который использует подпроцесс для анализа входных файлов с помощью QualityAnalysisMain_v2.py.Прямо сейчас он отлично работает на одном процессоре.То, что я хотел бы сделать, это запустить pararell каждый входной файл на одном CPU - 28 запускается одновременно.
Я попробовал подход здесь: Python, распространяющий subprocess.call на нескольких ядрах процессора
особенно этот код:
import threading
import subprocess
def worker():
"""thread worker function"""
print 'Worker'
subprocess.call(mycode.py, shell=inshell)
return
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
здесь:
for pliki in os.listdir(input_data):
nazwa = pliki.split(".")[0]
subprocess.call("mkdir " + output_data + nazwa, shell=True)
def SubprocessFiles():
for pliki in os.listdir(input_data):
print("python QualityAnalysisMain_v2.py " + input_data + pliki)
subprocess.call("python QualityAnalysisMain_v2.py " + input_data + pliki, shell = True)
return
threads = []
for i in range(28):
t = threading.Thread(target=SubprocessFiles)
threads.append(t)
t.start()
Но это закончилось синтаксическим анализом первого ввода 28 раз ...
Вот мой код - скрипт выполняется для каждого файла во входном каталоге, но на одном процессоре:
for pliki in os.listdir(input_data):
nazwa = pliki.split(".")[0]
print("python QualityAnalysisMain_v2.py " + input_data + pliki)
subprocess.call("mkdir " + output_data + nazwa, shell = True)
subprocess.call("python QualityAnalysisMain_v2.py " + input_data + pliki, shell = True)
Большое спасибо за любые предложения.
лучше всего, Агата