Python基础(八)---进程间通信-Queue

进程之间需要通信,操作系统提供了很多机制来实现进程间的通信

1.multiprocessing模块的QUEUE实现多进程之间的数据传递。Queue本身是一个消息队列程序。

初始化一个Queue对象 q=Queue(num),num 表示最多接收的消息数量,如果不指定,或数量为负数,那么久代表可接收的消息数量没有上限,直到内存的尽头;

  • Queue.qsize():返回当前队列包含的消息数量
  • Queue.empty(),返回FALSE 或TRUE,表示队列是否为空
  • Queue.full(),返回false或TRUE,表示队列是否满了
  • Queue.get([block[,timeout]]):获取队列中的一条消息,然后从队列中移除。block值默认为TRUE

如果block使用默认值,且没有设置timeout,消息队列如果为空,此时程序将被阻塞(停在读取状态),直到消息队列读到消息为止。如果设置了timeout,会等待timeout秒,如果还没读取到任何消息,就抛出异常。

如果block值为false,消息队列如果为空,则会立即抛出一样。

  • Queue.get_nowait():相当Queue.get(False);

  • Queue.put(item,[block[, timeout]]):将item消息写入队列,block默认值为True;

如果使用默认值。且没有设置timeout,消息队列如果已经没有空间可写入,程序会被阻塞。

如果设置了timeout,等待timeout秒,若还没有空间,则抛出异常

如果block使用false,消息队列如果没有空间写入,会立刻抛出异常。

  • Queue.put_nowait(item):相当Queue.put(item, False);
如果使用进程池创建进程,需要使用multiprocessing.Manager()中的Queue()。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值