所以我最終要做的就是讀一行,用該行中的信息做一些計算,然後將結果添加到某個全局對象,但我永遠無法得到它上班。例如,在下面的代碼中,測試總是爲0。我知道這是錯誤的,我嘗試過其他方式,但它仍然無法正常工作。在python中多處理時改變全局變量
import multiprocessing as mp
File = 'HGDP_FinalReport_Forward.txt'
#short_file = open(File)
test = 0
def pro(temp_line):
global test
temp_line = temp_line.strip().split()
test = test + 1
return len(temp_line)
if __name__ == "__main__":
with open("HGDP_FinalReport_Forward.txt") as lines:
pool = mp.Pool(processes = 10)
t = pool.map(pro,lines.readlines())
全局通常是你正在做的事情錯了一個標誌。我建議改變程序的工作方式以避免它們 - 從長遠來看,它會爲你節省頭痛,而且總會有更好的方法。 –
多處理模塊的重點在於它在同一個進程中產生子進程而不是線程,並具有所有通常的折衷。不幸的是,假設你已經知道它們,那麼文檔根本不能解釋這些折衷。如果您按照文檔中的所有「編程指南」進行操作,您可能會忽略不瞭解,但您確實應該學習。 – abarnert