使用Python多进程求素数个数
时间: 2024-02-16 11:56:52 浏览: 103
以下是使用Python多进程求素数个数的示例代码:
```python
import multiprocessing
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
def count_primes(start, end):
count = 0
for i in range(start, end):
if is_prime(i):
count += 1
return count
if __name__ == '__main__':
num_processes = 4
pool = multiprocessing.Pool(processes=num_processes)
num_list = list(range(1, 1000001))
chunk_size = len(num_list) // num_processes
chunks = [num_list[i:i+chunk_size] for i in range(0, len(num_list), chunk_size)]
results = [pool.apply_async(count_primes, args=(chunk[0], chunk[-1]+1)) for chunk in chunks]
output = [p.get() for p in results]
print(sum(output))
```
该代码使用了multiprocessing模块来实现多进程计算素数个数。首先定义了一个is_prime函数来判断一个数是否为素数。然后定义了一个count_primes函数来计算一个区间内的素数个数。在主程序中,首先创建了一个进程池,然后将1到1000000的数字列表分成了4个子区间,对每个子区间启动了一个异步进程来计算该区间内的素数个数,并将结果存储在result列表中。最后将所有结果相加即可得到1到1000000之间的素数个数。
阅读全文