Python使用Manager对象实现进程间数据交换。要求:子进程负责统计100以内的素数并将其存入共享列表中,主进程负责读取共享列表的数据并输出。
时间: 2024-05-02 07:17:41 浏览: 40
下面是一个示例代码:
```python
from multiprocessing import Process, Manager
# 判断一个数是否为素数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 子进程函数,统计100以内的素数并存入共享列表
def worker(shared_list):
for i in range(2, 100):
if is_prime(i):
shared_list.append(i)
# 主进程函数,读取共享列表的数据并输出
def main(shared_list):
print("素数列表:", shared_list)
if __name__ == '__main__':
with Manager() as manager:
shared_list = manager.list() # 创建共享列表
p = Process(target=worker, args=(shared_list,)) # 创建子进程
p.start() # 启动子进程
p.join() # 等待子进程结束
main(shared_list) # 调用主进程函数
```
运行结果:
```
素数列表: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
```
阅读全文