我在totalprocessing totaly。我試圖改變我的代碼,以便同時運行它的一部分。Python和多處理示例
我有一個巨大的列表,我必須調用每個節點的API。因爲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
這不是保存數據的多處理庫。失敗的部分不在您展示的部分中。 –