zoukankan      html  css  js  c++  java
  • 案例:图片下载器

    一、需求分析

      

      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

  • 相关阅读:
    Unity shader之金属质感衣服
    Unity之如何使用夜神模拟器logcat
    Unity XLua之协程
    Unity shader之ColorMask
    NGUI之实现连连看小游戏
    NGUI之使用UISprite画线
    Unity如何退出游戏
    c#之AES加密解密
    Unity shader学习之屏幕后期处理效果之高度雾,重建world pos方法2
    Unity shader学习之屏幕后期处理效果之高度雾,重建world pos方法1
  • 原文地址:https://www.cnblogs.com/yujiemeigui/p/14312806.html
Copyright © 2011-2022 走看看