加粗样式**进程中的通信及其队列Queue
首先要说通信,哪队列是必不可少的一个知识点,
1:队列也是模块multiprocessing中的一个知识点,进程通信的信封信纸作用,
我们上一篇文章已经看了他的具体用法,(可以在我的博客找上一篇文章)
2:这篇文章我们主要讲通信中是使用队列
*
!/usr/bin/env python3
*
# -*- coding: utf-8 -*
import time
from multiprocessing import Process,Queue
def download(q):
images = ['girl.jpg','boy.jpg','man.jpg']
for image in images:
print('download',image)
#睡眠0.5秒,要不然太快了,看不到进程的相互交替使用的过程
time.sleep(0.5)
q.put(image)
def getfile(q):
while True:
#为防止没有队列没有值得时候,继续使用q.get(),会出错爆红,所以用了try引出错误
try:
file = q.get(timeout = 1)
print('{}保存成功'.format(file))
except:
print('over')
break
#如果try内的东西正确就不会执行else,显然随着次数的增加,3次之后就会出错,所有一定会执行else.和except内的内容
else:
print('still runing')
if __name__ == '__main__':
q = Queue(5)
p1 = Process(target=download, args= (q,))
p2 = Process( target= getfile, args=(q,))
p1.start()
#p1.join()
p2.start()
p2.join()
print('主进程结束')
附上结果: