网络编程:进程创建--标准库multiprocessing模块(四--Queue消息队列通信)

1、队列

  【1】在内存中开辟队列结构空间,对多个进程可见。多个进程操作同一个队列对象可以实现消息的存取工作。

  【2】先进先出 

2、创建队列

  q = Queue(maxsize = 0)

  功能 : 创建队列对象

  参数 : maxsize,默认表示系统自动分配队列空间

       如果传入正整数则表示最多存放多少条消息

  返回值 : 队列对象

3、向队列中存入消息

  q.put(data,[block,timeout])

  功能:向队列中存入消息

  参数:data,存入的消息 (支持python数据类型)

       block, 默认True ,表示当队列满时阻塞

         设置为False ,则为非阻塞

      timeout, 超时时间

4、获取队列消息

  data = q.get([block,timeout])

  功能: 获取队列消息

  参数:block, 默认为True ,表示队列空时阻塞

          设置为False则表示非阻塞

       timeout,超时时间

  返回值 : 返回获取到的消息

from multiprocessing import Queue
from time import sleep 

#创建队列
q = Queue(3)

q.put(1)
sleep(0.1)
print(q.empty())
q.put("Process Queue")
q.put([1,2,3])
print(q.full())  
#如设置为非阻塞则产生Full异常
# q.put(666,False) #非阻塞
# q.put(666,True,3)  #超时
print(q.get())
print(q.qsize()) #查看消息数量
q.close()

#结果
False
True
1
2
from multiprocessing import Process,Queue
import time 

#创建队列
q = Queue()

def fun1():
    time.sleep(1)
    q.put({'name':'Abby','passwd':'123'})

def fun2():
    print("收到消息:",q.get())

p1 = Process(target = fun1)
p2 = Process(target = fun2)
p1.start()
p2.start()
p1.join()
p2.join()
~          
#结果
收到消息: {'passwd': '123', 'name': 'Abby'}

 

posted @ 2021-01-07 21:32  昱成  阅读(112)  评论(0编辑  收藏  举报