4.进程,线程——进程间通信,消息队列——queue

**线程共享全局变量,进程各自拥有一套变量,使用queue中间体进行通信**

基础

import multiprocessing

"""
使用multiprocessing模块的Queue实现多进程之间的数据传递
"""
# 创建队列,指定长度
queue = multiprocessing.Queue(5)

# 放值,实际传入值的数量大于指定长度,队列进入阻塞状态,默认等待队列先取再放入
# 阻塞的时间
queue.put(1, timeout=3)
# 放入值,不等待,如果满,报错
queue.put_nowait("hello")

# 取值,队列没有值,取值,进入阻塞,等待新的值到队列
print(queue.get(timeout=3))
# 取值,队列没有值,不等待,报错
print(queue.get_nowait())

# 基本判断

# 满
print("满", queue.full())
# 空
print("空", queue.empty())
# 队列剩余消息个数
print("剩余个数", queue.qsize())

进程间通信

import multiprocessing
import time


def write_queue(queue):
    for i in range(10):
        if queue.full():
            print("队列已满")
            break
        else:
            queue.put(i)
            print("写入成功,已经写入", i)
            time.sleep(0.5)


def read_queue(queue):
    while True:
        if queue.empty():
            print("队列空了")
            break
        else:
            value = queue.get()
            print("已经读取:", value)


if __name__ == '__main__':
    queue = multiprocessing.Queue(5)
    write_queue_process = multiprocessing.Process(target=write_queue, args=(queue,))
    read_queue_process = multiprocessing.Process(target=read_queue, args=(queue,))

    write_queue_process.start()
    write_queue_process.join()

    read_queue_process.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值