队列

ipc机制 进程通讯

管道: pipe 基于共享的内存空间

队列: pipe+锁 queue

###案例一
from multiprocessing import Process,Queue
q = Queue()
q.put('aaa')
q.put([1,2,4])
q.put(2)
print(q.get())
print(q.get())
print(q.get())
# q.put(5)
# q.put(5)
print(q.get()) # 默认就会一直等着拿值

###案例二
from multiprocessing import Process,Queue
q = Queue(4)
q.put('aaa')
q.put([1,2,4])
q.put([1,2,4])
q.put(2)

q.put('乔碧萝')  #队列满了的情况再放值,会阻塞

###案例三
from multiprocessing import Process,Queue
q = Queue(3)
q.put('zhao',block=True,timeout=2) #
q.put('zhao',block=True,timeout=2) #
q.put('zhao',block=True,timeout=2) #

q.put('zhao',block=True,timeout=5) # put里的  block=True 如果满了会等待,timeout最多等待n s,如果ns还是队列还是满的就报错了

###案例四
from multiprocessing import Process,Queue
q = Queue()
q.put('yyyy')
q.get()
q.get(block=True,timeout=5) # block=True 阻塞等待,timeout最多等5s, 剩下同上

###案例五
from multiprocessing import Process,Queue
q = Queue(3)
q.put('qwe')
q.put('qwe')
q.put('qwe')

q.put('qwe',block=False) # 对于put来说block=False 如果队列满了就直接报错

q = Queue(3)
q.put('qwe')
q.get()


q.get(block=False)
#block = Flase 拿不到不阻塞,直接报错
###案例六
from multiprocessing import Process,Queue
q = Queue(1)
q.put('123')
# q.get()
q.put_nowait('666') # block = False
# q.get_nowait() # block = False


原文地址:https://www.cnblogs.com/aden668/p/11528002.html