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小技巧分享
Nov 22 Python
简单介绍Python中的try和finally和with方法
May 05 Python
最大K个数问题的Python版解法总结
Jun 16 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
python从Oracle读取数据生成图表
Oct 14 Python
Python进程间的通信之语法学习
Apr 11 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数据压缩、加解密(pack, unpack)
2016/12/17 PHP
简单实现PHP留言板功能
2016/12/21 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
浅述python中argsort()函数的实例用法
2017/03/30 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python多线程分块读取文件
2019/08/29 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
如何用PHP实现邮件发送
2012/12/26 面试题
《两个铁球同时着地》教学反思
2014/02/13 职场文书
高一新生军训方案
2014/05/12 职场文书
党支部工作总结2015
2015/04/01 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL