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

来源:互联网 发布:java主要用来做什么 编辑:程序博客网 时间:2024/06/05 03:24

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

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()。


原创粉丝点击