进程间通信及线程间通信
进程队列
进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的
创建队列的类
from multiprocessing import Queue
创建实例
obj=Queue(n) #n是队列中允许最大项数,省略则无大小限制。根据硬件设置
代码
from multiprocessing import Queue #进程队列 q=Queue(3) q.put({'a':1}) #存数据 q.put('xxxxx') q.put(3) print(q.get()) #拿数据 print(q.get()) print(q.get()) #结果 #{'a': 1} #xxxxx #3 #如果你在一个线程中put+get。并且put次数超过队列项数就会等待,get次数超过put次数也会等待
线程队列
queue队列 :使用import queue,用法与进程Queue一样
队列
q=queue.Queue(3) q.put({'a':1}) q.put('xxxxx') q.put(3) print(q.get()) print(q.get()) print(q.get()) # 运行结果 #{'a': 1} #xxxxx #3
优先级队列
q=queue.PriorityQueue(3) #创建PriorityQueue对象 q.put((-1,'xxxxx')) #放数据时要放带序号的元组,且序号越小优先级越高 q.put((0,3)) print(q.get()) print(q.get()) print(q.get()) #结果 #(-1, 'xxxxx') #(0, 3) #(10, {'a': 1})
堆栈
q=queue.LifoQueue(3) #创建LifoQueue对象 q.put({'a':1}) q.put('xxxxx') q.put(3) print(q.get()) print(q.get()) print(q.get()) #结果 - 后进先出 #3 #xxxxx #{'a': 1}