Я запускаю программу для поиска элементов в огромном XML. Чтобы сократить время выполнения (16 минут в последовательном режиме), я решил научиться использовать multiprocessing
.
Каждый процесс должен читать строки из определенного файла и проверять ps_ root на совпадения
Пока что у меня есть это:
import xml.etree.ElementTree as ET
from multiprocessing import Process
import multiprocessing
def process_worker(fileName):
ps_tree = ET.parse("Conf0381_28-02.xml")
ps_root = tree.getroot()
print("In process . .")
with open(fileName,"r") as f:
for num, line in enumerate(f, 1):
if (found element within ps_root)
text_file = open(resultFile,"a").write(elementInfo)
f.close()
if __name__ == '__main__':
#A bunch of code to build the 'fileTHR_X.txt'
p0 = Process(target=process_worker, args=("fileTHR_0.txt",))
p0.start()
p1 = Process(target=process_worker, args=("fileTHR_1.txt",))
p1.start()
p2 = Process(target=process_worker, args=("fileTHR_2.txt",))
p2.start()
p3 = Process(target=process_worker, args=("fileTHR_3.txt",))
p3.start()
p0.join()
p1.join()
p2.join()
p3.join()
Но когда основная программа завершается, resultFile
все еще пуст. Я изучал это в течение двух дней, но поскольку я новичок в multiprocessing
, я не совсем знаю, как исследовать. Я пробовал добавить в процесс несколько print
, но они даже не появляются. Я работаю с Python 2.7.18 IDLE (F5 в моем program.py)
Спасибо