进程间通信

队列Queue模块

队列:先进先出

堆栈:现金后出

import queue 或者from mulitiprocessing import queue 下面创建时就写都可以q=Queue()  可以帮我们生成一个队列

创建一个队列:

q=queue.Queue()# 括号内可以传数据 标识生成的队列最大可以同时存放的数据量,不写有默认值

#往队列中存数据

q.put(111)#当队列数据放满了以后  如果还有数据要放程序会阻塞  直到有位置让出来

                     #v2=q.get_nowait()    #数据不够时会堵塞不显示,加这个如果没有数据给他的话就会报错

      #print(q.full())   #判断当前队列是否满了

      #print(q.empty()) #判断当前队列是否空了  以上三个在多进程中是不精确的

      

存取数据 存是为了更好的取

千方百计的存  简单快捷的取

#去队列中取数据

v1=q.get()

print(v1)  如果队列中已经没有数据的话  get方法方法会原地阻塞

 

 

管道:subprocess

stdin stdout (正确结果)  stdess(错误结果)

IPC机制:借助队列实现队列与队列之间的通信

from multiprocessing  import Queue,Process

研究思路:

1.主进程跟子进程借助于队列通信

def producer(q):   函数名字自己起

  q.put('老板你好')  往队列里面添加一个信息

  print('hello')

 

 

 

if __name__=='__main__':

  q=Queue()

  p=Process(target=producer,args=(q,))

  p.start()

  q.get() 如何、给没数据就等一会

2.子进程跟子进程借助于队列通信

 

posted @ 2023-09-26 15:06  朱饱饱  阅读(20)  评论(0)    收藏  举报