4
python 2.7.2의 다중 처리 모듈을 사용하여 계산을 수행하려고합니다. 내 코드는 다음과 같다 : python prime crunching: processing pool is slower? 내가 각 코어에서 실행중인 프로세스를받을 수 모두 같은 사전보고 :Python의 메모 처리, 클래스 및 다중 처리
from multiprocessing import Pool
import sys
sys.setrecursionlimit(10000)
partitions = []
class Partitions:
parts = {} #My goal is to use this dict to speed
#up calculations in every process that
#uses it, without having to build it up
#from nothing each time
def __init__(self):
pass
def p1(self, k, n):
if (k,n) in Partitions.parts:
return Partitions.parts[(k, n)]
if k>n:
return 0
if k==n:
return 1
Partitions.parts[(k,n)] = self.p1(k+1, n) + self.p1(k, n-k)
return Partitions.parts[(k,n)]
def P(self, n):
result = 0
for k in xrange(1,n/2 + 1):
result += self.p1(k, n-k)
return 1 + result
p = Partitions()
def log(results):
if results:
partitions.extend(results)
return None
def partWorker(start,stop):
ps = []
for n in xrange(start, stop):
ps.append(((1,n), p.P(n)))
return ps
def main():
pool = Pool()
step = 150
for i in xrange(0,301,step):
pool.apply_async(partWorker, (i, i+step), callback = log)
pool.close()
pool.join()
return None
if __name__=="__main__":
main()
나는이 새로운 오전, 나는 기본적으로이 페이지의 주요 코드의 형식을 복사 그들의 계산을 돕기 위해? 그것이 지금 행동하는 방법, 각 과정은 그것의 자신의 사전을 창조하고 미친 듯이 램을 먹는다.