进程-Queue消息队列

Queue消息队列

  • 进程之间的数据时不共享的, 因此想要在两个进程之间使用相同的数据, 那么需要使用到进程池的通信
  • 进程池通信方式有多种, 其中最主要用到是: 管道(Pipe)和队列(Queue)

Queue队列常用方法

  • 导入方式: from multiprocessing import Queue
  • Queue(n): 初始化一个消息队列, 并指定这个队列中最多能否容纳多少条消息, 例如:q = Queue(2),如果不传参数可以传任意数据, 直到内存饱满
  • put(object, block, timeout):默认是阻塞的方式,如果消息队列满了, 程序会阻塞在这个地方, 直到消息队列没有满为止。 block参数:默认为True, 设置为False,如果为阻塞状态,会立马抛出异常 timeout参数:默认为None, 如果指定最长时间,一旦超过时间了就会抛出异常
  • put_nowait():如果队列满了,会立马抛出异常
  • qsize():获取消息队列的消息数量
  • full():判断这个消息队列消息是否满了
  • empty():判断这个消息队列是否为空
  • get(block, timeout):获取队列中先添加进去的数据, 还会把这个数据从消息队列中删除, 如果获取到消息会阻塞到这个地方 block参数:默认为True, 如果设置为False, 一旦队列中没有数据, 立马抛出异常, timeout参数:指定阻塞最长时间, 一旦超过该时间抛出异常
put可以传入多种数据类型

在这里插入图片描述

使用Queue给Process进程通信

在这里插入图片描述

使用Queue做进程池(Pool)通信

  • 如果是使用Pool创建进程, 就需要使用multiprocessing.Manager中的Queue()
  • 导入方法: from multiprocessing import Manager
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值