队列是先进先出。
from multiprocessing import Queue q = Queue(6) # 队列容纳上限 q.put(1) # 放到队列里面 q.put(2) q.put(3) q.put(4) q.put(5) q.put(6) print(q.full()) # 检测队列是否满了 print(q.get()) print(q.get()) # 从队列中取数据 print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.empty()) # 检测队列是否空了 try: q.get_nowait() # 从队列中取数据且不阻塞,如果队列是空的就会报错。 except: print('队列已空')
进程间通信:
from multiprocessing import Process from multiprocessing import Queue def func1(q): q.put('hello2') # 子进程1中往队列里放置两次数据 q.put('hello1') def func2(q): print(q.get()) # 子进程2从队列里得到一个数据 if __name__ == '__main__': q = Queue() p = Process(target=func1, args=(q,)) p.start() print(q.get()) # 主进程从数据中获取一个数据 p = Process(target=func2, args=(q,)) p.start()
这样就实现了子进程与主进程,子进程与子进程之间的通信了。