다음은 파일을 읽고 각 행을 추가하는 샘플 코드입니다. 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()