Я много нового в многопроцессорной обработке. Я пытаюсь изменить свой код, чтобы одновременно выполнять часть его.Пример Python и многопроцессорности
У меня есть огромный список, где я должен назвать API для каждого узла. Поскольку API являются независимыми, мне не нужен результат первого, чтобы перейти ко второму. Итак, у меня есть этот код:
def xmlpart1(id):
..call the api..
..retrieve the xml..
..find the part of xml I want..
return xml_part1
def xmlpart2(id):
..call the api..
..retrieve the xml..
..find the part of xml I want..
return xml_part2
def main(index):
mylist = [[..,..],[..,..],[..,..],[..,...]] # A huge list of lists with ids I need for calling the APIs
myL= mylist[index] c
mydic = {}
for i in myL:
flag1 = xmlpart1(i)
flag2 = xmlpart2(i)
mydic[flag1] = flag2
root = "myfilename %s.json" %(str(index))
with open(root, "wb") as f:
json.dump(mydic,f)
from multiprocessing import Pool
if __name__=='__main__':
Pool().map(main, [0,1,2,3])
После нескольких предложений от сюда и из разговора, я заканчиваю с этим кодом. Проблема все еще существует. Я запускаю сценарий в 9:50. В 10:25 в моей папке появился первый файл «myfilename 0.json». Теперь это 11:25, и ни один из других файлов не появился. Подсети имеют равную длину, и они делают то же самое, поэтому им нужно примерно одно и то же время.
Я смущен о том, что вы просите о помощи с здесь. Приведенный код не будет работать, так как код имени [1-4] будет повторно использован (функции не имеют основного метода), а проблема с обработкой выходных данных - в коде, который вы вообще не показывали. –
Теперь лучше. Основная функция - импортные функции. Если я запускаю код в одном скрипте, у меня нет проблемы. Поэтому проблема не в функции main(), а на том, как использовать библиотеку многопроцессорности. – Tasos
Это не многопроцессорная библиотека, которая сохраняет данные. Часть, которая терпит неудачу, не входит в число, которое вы показываете. –