使用进程池统计指定范围内的素数个数 30
时间: 2024-01-27 09:06:10 浏览: 75
利用进程实现求解素数
以下是使用进程池统计指定范围内的素数个数的示例代码:
```python
from multiprocessing import Pool
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def count_primes(start, end):
count = 0
for num in range(start, end):
if is_prime(num):
count += 1
return count
if __name__ == '__main__':
num_processes = 4 # 设置进程池大小
start = 2 # 范围起始值
end = 100000 # 范围结束值
pool = Pool(num_processes)
chunk_size = (end - start) // num_processes # 每个进程处理的数据量
results = []
for i in range(num_processes):
chunk_start = start + i * chunk_size
chunk_end = chunk_start + chunk_size
if i == num_processes - 1:
chunk_end = end
results.append(pool.apply_async(count_primes, args=(chunk_start, chunk_end)))
pool.close()
pool.join()
total_count = 0
for result in results:
total_count += result.get()
print(f'Total number of primes between {start} and {end}: {total_count}')
```
在上面的代码中,我们定义了两个函数:`is_prime`和`count_primes`。`is_prime`函数用于判断一个数是否为素数,`count_primes`函数用于在指定范围内统计素数的个数。然后我们在`main`函数中使用进程池来并行执行`count_primes`函数,将指定范围分成若干个小范围,每个进程处理一个小范围的数据。最后将所有进程的结果累加起来,得到指定范围内素数的总个数。
阅读全文