マルチコア プロセッサを利用できるように、アルゴリズムを実装する必要があります。これまでのところ、私はこれを持っています:
def handle_primes(n, segments):
""" Returns the count of primes below n, using segments """
if __name__ == '__main__' :
# Initialize
count = 0
pool = Pool(processes=segments)
segment_size = n/segments
# Count primes in each segment
for start in xrange(2, n+1, segment_size+1):
end = start+segment_size
if end>n:
end = n
count += pool.apply_async(countprimes, [start, end]).get()
return count
countprimes()
セグメント内の素数を最初から最後まで数えます。
このコードは、 のみを使用した通常の実装よりも遅く実行されcountprimes()
ます。マルチプロセッシング モジュールの使い方が間違っていますか?