下面是一些示例代碼,它讀取一個文件並將每行加起來。它應該將0-20的所有數字相加。但是,我總是得到0
的結果。如何在Python多處理中使用類?
我可以看到中間計算成功,爲什麼最終結果0
?
有沒有更好的方法來做到這一點?我正在嘗試對更大,更復雜的輸入文件進行更多的計算,並隨時存儲一些統計數據。
import multiprocessing
import StringIO
class Total():
def __init__(self):
self.total = 0
def add(self, number):
self.total += int(number)
def __str__(self):
return str(self.total)
total = Total()
def f(input):
total.add(input)
# Create mock file
mock_file = StringIO.StringIO()
for i in range(20):
mock_file.write("{}\n".format(i))
mock_file.seek(0)
# Compute
pool = multiprocessing.Pool(processes=4)
pool.map(f, mock_file)
print total
# Cleanup
mock_file.close()