Python-进程通信(队列实现)
进程通信
进程通信可以通过队列实现。先介绍一下Queue的简单使用。
from queue import Queue,LifoQueue,PriorityQueue
q = Queue(5)
q.put('A')
q.put('B')
q.put('C')
q.put('D')
q.put('E')
if q.full():
print("队列已满!!!!")
else:
q.put('F',timeout=2) #如果队列满了,则只能等待;除非有“空地”才能添加成功。
q.get()
q.get()
q.get()
q.get()
q.get()
if q.empty():
print('队列已空')
else:
q.get(timeout=2) # 如果队列为空,取元素会阻塞。
输出:
队列已满!!!!
队列已空
通过队列实现进程通信
用例:
from multiprocessing import Process,Queue # Queue别导错了!
from time import sleep
def download(q):
images = ['girl.jpg','boy.jpg','man.jpg']
for image in images:
print('正在下载:',image)
sleep(0.5)
q.put(image)
def getfile(q):
while True:
try:
file = q.get(timeout = 2)
print('{} 保存成功!!!'.format(file))
except:
print('全部保存完毕!')
break
if __name__ == '__main__':
q = Queue(5)
p1 = Process(target=download,args=(q,))
p2 = Process(target=getfile, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
输出:
正在下载: girl.jpg
正在下载: boy.jpg
girl.jpg 保存成功!!!
正在下载: man.jpg
boy.jpg 保存成功!!!
man.jpg 保存成功!!!
全部保存完毕!
还没有评论,来说两句吧...