文章目录
一、multiprocessing内置消息队列
消息队列是先进先出的,用于进行进程之间信息传递的。
from multiprocessing import Queue
q = Queue(3) # 设置队列长度
q.put(123) # 向队列添加元素
q.put(1234)
print("队列是否填满:",q.full()) # 判断队列是否填满
q.put(12345)
print("队列是否填满:",q.full())
print(q.get()) # 从队列取出元素
print("队列是否为空:",q.empty()) # 判断队列是否为空
print(q.get())
print(q.get_nowait()) # 从队列取一个元素,如果队列为空,则报错
print("队列是否为空:",q.empty())
print(q.get_nowait()) # 从队列取一个元素,如果队列为空,则报错
full()
empty()
get_nowait()
三个方法不能在并发的情况下精确使用。
二、IPC机制
IPC机制主要是用来处理以下几种情况的:
- 主进程与子进程之间的信息交互
- 子进程与子进程之间的信息交互
其本质是不同内存空间的进程数据交互
from multiprocessing import Process, Queue
def dask(q, cont):
print("子进程%d获取了一个数据信息:%s"%(cont, q.get()))
def se(q,cont , txt):
q.put(txt)
print("子进程%d存放了一个数据信息:%s"%(cont, txt))
if __name__ == '__main__':
q = Queue(5)
p1 = Process(target=dask, args=(q, 1))
p2 = Process(target=se, args=(q, 2, "hello"))
p2.start()
p1.start()
三、生产者消费者模型
生产者指生成数据的部分
消费者指使用数据的部分
生产者消费者模型主要怕用于解决生产和使用之间的关系,生产过快或者消费过快都是不行的,此时便需要一个平衡,所以产生了生产者消费者模型。
from multiprocessing import Process,