gpt4 book ai didi

Python - 用于多处理环境的埃拉托色尼筛法实现

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:46 24 4
gpt4 key购买 nike

我需要实现该算法,以便它能够利用多核处理器。到目前为止我有这个:

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() 的常规实现要慢。我是否错误地使用了多处理模块?

最佳答案

get 将被阻止。您需要编写两个循环。试试这个:

 # Count primes in each segment
processes = []
for start in xrange(2, n+1, segment_size+1):
end = start+segment_size
if end>n:
end = n
processes.append(pool.apply_async(countprimes, [start, end]))
for process in processes:
count += process.get()

关于Python - 用于多处理环境的埃拉托色尼筛法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com