Python进程间通信--Queue
2018-03-30 13:11
176 查看
#进程间通信--Queue--操作系统开启消息队列 '''Process有时是需要通信的,操作系统提供了很多机制来实现进程间通信 而Queue就是其中一个 1、Queue的使用问题,可以使用multiprocessing模块下的Queue实现多进程直接的传递,Queue本身就是 一个消息队列,首先 ''' #但是MAC的qsize 用不了。。,所以本篇代码会报错NotImplementedError,属于正常 from multiprocessing import Queue if __name__=='__main__': #初始化一个Queue对象,最多可以接收3条信息 # Queue类的__init__方法中def __init__(self, maxsize=-1):#-1表示无穷大 #实战代码就是-1或者不写,就是无穷大 # q=Queue(3)#开辟了空间 # # #向里面放消息,一个进程可以放多条消息到Queue中 # #放消息 # q.put('消息1') # q.put('消息2') # print(q.full()) # q.put('消息3') # print(q.full()) # q.full()#满为真True,未满:False # if q.full(): # print('消息队列已经满了,不要再放了') # else: # q.put('消息N') #若队列满了,我还接着put,会发生什么 #q.put('消息4')#等同于q.put('消息4',True,None) #def put(self, obj, block=True, timeout=None): #会发生阻塞,等待,直到消息队列不满时添加进去 #print(q.full()) # q.put('消息4',False)#因为之前已经放满了,所以执行本语句会报错queue.Full #下面的try...except不够健壮,会阻塞一直等待下去 # try: # q.put('消息4') # except: # print('消息队列已经满了,现在消息数量:%d'%q.qsize()) #实战中以下会更健壮 # if not q.full(): # q.put('消息内容',False)#False意为不等,立即向里面放 #以上两句等同于Queue中put_nowait方法 # if not q.full(): # q.put_nowait('消息内容') #获取信息 先进先出原则FIFO q1=Queue(3) q1.put('A') q1.put('B') q1.put('c') count=q1.qsize()#线程池数量为全局变量 if not q1.empty(): for i in range(count): # get(self, block=True, timeout=None): get(self, block=True, timeout=None): #print(q1.get())#取出线程池所有消息后,会一直等待,不能结束,发生阻塞 print('%d'%q1.qsize()) print(q1.get_nowait()) print('over!') ''' 说明: 1、初始化Queue对象时,例如:q=Queue(),或括号中没有指定最大可接收的消息数量, 或数量为负值,那么就表示可接收的消息数量没有上限(直到内存的尽头) 2、常用函数 a. q.qsize()返回当前队列包含的消息数量 b. q.full()表示当前队列是否已经满了,True-满,False-未满 c. q.put('消息',block=True,timeout=None) q.get(block=True,timeout=None) block(默认True)----此时阻塞,等待,直到put/get进去为止 timeout(默认None)--一直等待,如果设置timeout,等待N秒后会强制put/get d. q.put_nowait()--相当于q.put('消息内容',False) e. q.empty()表示当前队列是否为空,True空,False不空 f. q.get_nowait()--相当于q.get(block=False) '''ABCover
相关文章推荐
- python进程间通信--Queue
- Python 进程间通信 Queue
- Python进程间通信Queue实例解析
- python - 进程间通信-Queue
- Python基础(八)---进程间通信-Queue
- python进程间通信-Queue
- 使用Python的Queue实现线程/进程间通信
- python Queue进阶
- python_queue多线程
- Python: Queue class
- python 进程间通信【转】
- python Queue模块
- Python 3基础教程40-队列-Queue
- python实现stack 和 queue
- python队列在Queue,Collection 的基础
- python 多进程 —— 进程间通信
- Python进程间通信之匿名管道
- python 之queue
- Python多线程/进程:os、sys、Queue、multiprocessing、threading
- Python multiprocessing 使用手记[3] – 关于Queue