ファイルを読み取り、各行を合計するサンプル コードを次に示します。0 から 20 までのすべての数字を合計することになっています。ただし、常に結果が得られ0
ます。
中間計算は成功しているのに、なぜ最終結果が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()