首页 > 其他 > 详细

案例:图片下载器

时间:2021-01-22 17:01:05      阅读:23      评论:0      收藏:0      [点我收藏+]

 

一、需求分析

  

  1、补充说明:使用协程实现多任务只需要使用gevent实现的方式即可之前两种(yield和greenlet)仅仅只是原理。

  2、要求:使用协程实现图片下载器功能

 

  3、分析:

    a、在Python中使用网络功能

 

    b、使用协程实现图片下载器功能:

      基本语法:    

      import urllib.request

      请求对象 = urllib.request.urlopen("网址")

 

    c、网络下载的过程是一个延时操作,所以使用协程是最好的办法了。

 

 

二、使用协程实现图片下载示例

 

技术分享图片
import urllib.request
import gevent
from gevent import monkey

# 延时补丁
monkey.patch_all()


def downloader(img_name, img_url):
    """图片下载函数
    参数1:图片名称
    参数2:图片网址
    """
    # img_url = ‘https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1846962141,3948433112&fm=26&gp=0.jpg‘
    req = urllib.request.urlopen(img_url)  # 下载图片
    img_content = req.read()  # 读取图片内容,由于网络原因,程序会卡在这个地方。

    with open(img_name, "wb") as f:
        f.write(img_content)  # 将图片内容写入当前目录下


def main():
    img_url1 =  
    img_url2 =  
    
    # 使用gevent.joinall将任务加入到列表中,
    # 参数一:表示任务名,参数二:下载到本地图片保存后名字,参数三:要下载的图片地址
    gevent.joinall([
        gevent.spawn(downloader, "1.jpg",img_url1),
        gevent.spawn(downloader, "2.jpg", img_url2)
])


if __name__ == "__main__":
    main()
View Code

 

运行结果:

 

在当前目录下创建了两个图片文件,分别是:

1.jpg

2.jpg

案例:图片下载器

原文:https://www.cnblogs.com/yujiemeigui/p/14312806.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!