1.进程间的通信
""" 队列:先进先出 堆栈:先进后出 """ from mulitprocessing import Queue q = Queue(5) # 括号内可以传参数 表示的是这个队列的最大存储数 q.put(1) q.put(2) print(q.full()) # 判断队列是否满了 q.put(3) q.put(4) q.put(5) print(q.full()) q.put(6) # 当队列满了之后 再放入数据 不会报错 会原地等待 直到队列中有数据被取走(阻塞态) print(q.get()) print(q.get()) print(q.empty()) # 判断队列是否为空 print(q.get()) print(q.get()) print(q.get()) print(q.empty()) print(q.get_nowait()) # 取值 没有值不等待直接报错 print(q.get()) # 当队列中的数据被取完之后,再次获取,程序会阻塞,直到有人往队列里放入值 """ full get_nowait empty 都不适用于多进程的情况 """
进程间通信IPC机制
from multiprocessing import Process,Queue def producer(q): q.put('hello baby') def consumer(q): print(q.get()) if __name__ == '__main__': q = Queue() p = Process(target=producer,args=(q,)) c = Process(target=consumer,args=(q,)) p.start() c.start() """ 子进程放数据 主进程获取数据 两个子进程相互放 取数据 """
生产者消费者模型
from multiprocessing import Process,JoinableQueue import time import random def producer(name,food,q): for i in range(10): data = '%s生产的%s%s'%(name,food,i) time.sleep(random.random()) print(data) q.put(data) def consumer(name,q): while True: data = q.get() print('