Есть ли способ, которым я мог бы изменить приведенный ниже код для параллельного выполнения команды matlab field solver в строке подпроцесса?
Приведенный ниже код анализирует XML-файл и создает 8000 его копий с разными именами файлов и изменениями параметров в соответствии с циклами for, а затем вызывает решатель полей Matlab для последовательного решения каждого из них.
Запуск их последовательно занимает много времени и просто утомительно, поэтому мне было интересно, есть ли способ изменить это так, чтобы он открывал 4-5 терминалов и запускал 4-5 XML-файлов параллельно? Это действительно уменьшит время запуска всех этих файлов.
from lxml import etree as ET
#import xml.etree.ElementTree as ET
import subprocess
import os
def frange(start, end, step):
tmp = start
while(tmp <= end):
yield tmp
tmp += step
#print os.getcwd()
os.chdir('C:\Users\Aravind_Sampathkumar\Desktop\IMLC')
#print os.getcwd()
fileCount = 1
tree = ET.parse('C:\Users\Aravind_Sampathkumar\Desktop\IMLC\BO\IMLC_v4p8_Aravind.xml')
#tree = ET.fromstring(xml)
root = tree.getroot()
#print(root.attrib)
# print child.tag, child.attrib
#import py2exe
#print root[3].attrib
for child in root.iter('Traces'):
child.find('TS')
child.find('TW')
for i in frange(3,12.75,0.25):
child.set('TS',str(i))
for k in frange(3,12.75,0.25):
child.set('TW',str(i))
for child2 in root.iter('Stackup'):
child2.find('core_h')
for j in frange(2,4,0.5):
for child3 in root.iter('Definition'):
child3.set('modelname', 'Output{}.xml'.format(fileCount))
child2.set('core_h',str(j))
tree.write('C:\Users\Aravind_Sampathkumar\Desktop\IMLC\BO\Output{}.xml'.format(fileCount))
subprocess.call(['imlc.exe','C:\Users\Aravind_Sampathkumar\Desktop\IMLC\BO\Output{}.xml'.format(fileCount)],shell=True)
fileCount = fileCount+1
# for j in frange(2,4,0.5):