python基于gevent实现并发下载器代码实例


Posted in Python onNovember 01, 2019

这篇文章主要介绍了python基于gevent实现并发下载器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

并发下载原理

import gevent
from gevent import monkey
import urllib.request
monkey.patch_all()
def my_download(url):
    print('GET: %s' % url)
    resp = urllib.request.urlopen(url)
    data = resp.read()
    print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
    gevent.spawn(my_download, "https://www.baidu.com"),
    gevent.spawn(my_download, "https://www.cnblogs.com"),
    gevent.spawn(my_download, "https://www.huya.com")
  
])

运行结果:

GET: https://www.baidu.com
GET: https://www.cnblogs.com
GET: https://www.huya.com
227 bytes received from https://www.baidu.com.
46411 bytes received from https://www.cnblogs.com.
353563 bytes received from https://www.huya.com.

实现多张图片同时下载

import gevent
from gevent import monkey
import urllib.request


monkey.patch_all()


def my_download(url, image_path):
  print('GET: %s' % url)
  resp = urllib.request.urlopen(url)
  data = resp.read()
  print('%d bytes received from %s.' % (len(data), url))
  
  with open(image_path, "wb") as f:
    f.write(data)
gevent.joinall([
  gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1099/4c/73ff3e6ce165fb658b2082d4d126c6_2168_1544414129.jpg", "1.jpg"),
  gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1020/03/7949816c55f45b9adc9f03d9330af3_2168_1542941499.jpg", "2.jpg"), 
  gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1061/55/8071537fa10120c43c5a1359a88530_2168_1545302709.jpg", "3.jpg"),
])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中根据字符串调用函数的实现方法
Jun 12 Python
python爬虫之百度API调用方法
Jun 11 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
windows下python安装pip图文教程
May 25 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
python实现倒计时小工具
Jul 29 Python
pandas的相关系数与协方差实例
Dec 27 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
Python字符串的转义字符
Apr 07 Python
python进程间通信Queue工作过程详解
Nov 01 #Python
通过实例了解python property属性
Nov 01 #Python
python装饰器练习题及答案
Nov 01 #Python
Django框架HttpRequest对象用法实例分析
Nov 01 #Python
Django框架HttpResponse对象用法实例分析
Nov 01 #Python
Django框架序列化与反序列化操作详解
Nov 01 #Python
redis数据库及与python交互用法简单示例
Nov 01 #Python
You might like
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
YII框架http缓存操作示例
2019/04/29 PHP
js 目录列举函数
2008/11/06 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
three.js实现3D视野缩放效果
2017/11/16 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
python实现的多线程端口扫描功能示例
2017/01/21 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
浅述python中深浅拷贝原理
2018/09/18 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python函数定义和调用过程详解
2020/02/09 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
心得体会的写法
2014/09/05 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
学校会议通知范文
2015/04/15 职场文书
刑事申诉状范文
2015/05/20 职场文书
老人院义工活动感想
2015/08/07 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
教你使用TensorFlow2识别验证码
2021/06/11 Python
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android