一.IPC机制
1.队列,及其方法
from multiprocessing import Process,Queue # 实例化创建队列 """ 队列中的方法: 1.put,向队列中添加数据 2.get,从队列中取数据 3,full,判断队列是否满了 4,empty,判断队列是否为空 5,get_nowait,从队列取值,没值不等待直接报错 6,实例化产生队列时,Queue()括号内可以传数字,表示该队列中的数据量多少,不传为默认值(很大默认无穷) """ q=Queue(3) # 最大存储数为3 q.put(1) q.put(2) q.put(3) print(q.full()) # 判断队列是否满了 # q.put(4) # 不会报错,会卡在这,等从队列中取出一个数据 print(q.get()) print(q.get()) print(q.get()) print(q.empty()) # 判断队列是否为空 # print(q.get()) # 不会报错,会卡在这,等待队列传值 print(q.get_nowait()) # 判断队列是否为空,空直接报错
ps:full,empty,get_nowait都不适用与多进程
2.IPC机制(管道加队列)
队列:创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。
from multiprocessing import Process,Queue def put(q): q.put('为社么不是你来放') print(q) def get(q): print(q.get('为社么不是你来取')) if __name__ == '__main__': q=Queue() p=Process(target=put,args=(q,)) g=Process(target=get,args=(q,)) p.start() g.start()
3.生产者消费者模型
1.基于队列产生的消费者生产者模型
from multiprocessing import Process,Queue import time,random,os def consumer(q): while True: res=q.get() time.sleep(random.randint(1,3)) print('