知识点:
1.Queue 基本用法
2.Process 之间信息交互
3.Pool之间信息交互
from multiprocessing import Queue
q = Queue(3)
q.qsize()
q.put("haha--1")
q.put("haha--2")
q.put("haha--3")
if q.full():
print(1)
print(q.get())
print(q.get())
print(q.get())
if q.empty() == 1:
print("队空")
#会报错
print(q.get_nowait())
#不会报错
print(q.get())
#process 采用Queue通信
from multiprocessing import Process,Queue
#写操作
def writer(q):
for value in ['a','b','c']:
print("value = %s "%value)
q.put(value)
#读操作
def reader(q):
while True:
if not q.empty():
print(q.get())
else :
break
if __name__ == "__main__":
#创建1个队列有三个位置
q = Queue(3)
#创建进程1进行写入队列
p1 = Process(target = writer,args = (q,))
#创建进程2进行读出队列
p2 = Process(target = reader,args = (q,))
p1.start()
p1.join()
#进程之间分工合作
p2.start()
p2.join()
#体现分工合作的思想
from multiprocessing import Pool,Manager
def writer(q):
for value in ['A','B','C']:
print(value)
q.put(value)
def reader(q):
#获取队列长度
for i in range(q.qsize()):
print(q.get())
if __name__ == "__main__":
#用Manager中的Queue来初始化
#创建队列
q = Manager().Queue()
po = Pool()
#使用阻塞模式创建进程writer执行完后在执行reader
po.apply(writer,(q,))
po.apply(reader,(q,))
#由于主进程不等子进程
po.close()
po.join()