选择一种进程通信方式,实现两个进程的通信,其中一个接收键盘输入一个大于0的数(学号),并发送,另一个进程收到数据后计算从1加到这个数,并打印结果输出。
时间: 2024-12-17 14:18:17 浏览: 4
可以使用Python的`multiprocessing`模块中的`Queue`(队列)来进行进程间通信。这是一种无锁数据结构,适合于线程安全的数据传递。下面是一个简单的示例,演示了如何在一个进程读取用户的输入并将它放入队列,另一个进程从队列中取出数字并计算累加和:
```python
import multiprocessing
# 创建一个空队列用于进程间通信
queue = multiprocessing.Queue()
def input_process():
# 接收用户输入
while True:
try:
num = int(input("请输入一个正整数(退出请输入0): "))
if num == 0:
break
queue.put(num)
except ValueError:
print("输入无效,请输入一个正整数。")
def calculate_sum():
total = 0
while True:
# 从队列中获取数字
num = queue.get()
if num is None: # 检查是否结束标志
break
total += num
print(f"累加和已经到达: {total}")
# 启动输入进程
input_process_proc = multiprocessing.Process(target=input_process)
input_process_proc.start()
# 启动计算进程
calculate_sum_proc = multiprocessing.Process(target=calculate_sum)
calculate_sum_proc.start()
# 等待计算进程完成
calculate_sum_proc.join()
# 结束输入进程并发送结束信号
queue.put(None)
input_process_proc.join()
```
在这个例子中,`input_process`负责接收用户的输入并将其放入队列,当用户输入0时,表示通信结束。`calculate_sum`进程不断从队列中取出数字并计算总和,直到接收到None作为结束信号。
阅读全文