当前位置:网站首页>简单进程间数据交互

简单进程间数据交互

2022-01-15 02:32:22 程序员进化不脱发!

来源

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
没有发现数据
没有发现数据
没有发现数据
没有发现数据
没有发现数据
没有发现数据

版权声明
本文为[程序员进化不脱发!]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43134049/article/details/122151426

随机推荐