简单进程间数据交互

来源

from multiprocessing import Process, Queue  # 导入Process和Queue
import os, time, random


def write(q):  # 定义函数,接收Queue的实例参数
    for v in range(10):
        print('Put %s to Queue' % v)
        q.put(v)  # 添加数据到Queue
        time.sleep(1)


def read(q):  # 定义函数,接收Queue的实例参数
    while True:
        if not q.empty():  # 判断,如果Queue不为空则进行数据取出。
            v = q.get(True)  # 取出Queue中的数据,并返回保存。
            print('Get %s from Queue' % v)
            time.sleep(1)
        else:  # 如果Queue内没有数据则退出。
            print("没有发现数据")
            continue
            #break


if __name__ == '__main__':
    q = Queue()  # 实例化Queue括号内可选填,输入数字表示有多少个存储单位。以堵塞方式运行。必须等里边有空余位置时,才能放入数据,或者只能等里边有数据时才能取出数据,取不出数据,或者存不进数据的时候则会一直在等待状态。
    pw = Process(target=write, args=(q,))  # 实例化子进程pw,用来执行write函数,注意这里的函数不带括号,只是传递引用,参数需要使用args参数以元组的方式进行接收。
    pr = Process(target=read, args=(q,))  # 实例化子进程pr,用来执行read函数,注意这里的函数不带括号,只是传递引用,参数需要使用args参数以元组的方式进行接收。
    pw.start()  # 开始执行pw。
    pr.start()  # 开始执行pr。
    pw.join()  # 等待pw结束
    pr.join()  # 等待pr结束
    print('Over')  # 主进程结束

输出

Put 0 to Queue
Get 0 from Queue
Put 1 to Queue
没有发现数据
Get 1 from Queue
Put 2 to Queue
没有发现数据
没有发现数据
Get 2 from Queue
Put 3 to Queue
没有发现数据
Get 3 from Queue
Put 4 to Queue
没有发现数据
Get 4 from Queue
Put 5 to Queue
没有发现数据
Get 5 from Queue
Put 6 to Queue
Get 6 from Queue
Put 7 to Queue
没有发现数据
没有发现数据
没有发现数据
Get 7 from Queue
Put 8 to Queue
没有发现数据
没有发现数据
Get 8 from Queue
Put 9 to Queue
没有发现数据
Get 9 from Queue
没有发现数据
没有发现数据
没有发现数据
没有发现数据
没有发现数据
没有发现数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员进化不脱发!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值