进程中的通信及其队列Queue

加粗样式**进程中的通信及其队列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('主进程结束')

附上结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值