python 并发下载器实现方法示例


Posted in Python onNovember 22, 2019

本文实例讲述了python 并发下载器实现方法。分享给大家供大家参考,具体如下:

并发下载器

并发下载原理

from gevent import monkey
import gevent
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, 'http://www.baidu.com/'),
    gevent.spawn(my_downLoad, 'http://www.itcast.cn/'),
    gevent.spawn(my_downLoad, 'http://www.itheima.com/'),
])

运行结果

GET: http://www.baidu.com/
GET: http://www.itcast.cn/
GET: http://www.itheima.com/
111327 bytes received from http://www.baidu.com/.
172054 bytes received from http://www.itheima.com/.
215035 bytes received from http://www.itcast.cn/.

从上能够看到是先发送的获取baidu的相关信息,然后依次是itcast、itheima,但是收到数据的先后顺序不一定与发送顺序相同,这也就体现出了异步,即不确定什么时候会收到数据,顺序不一定

实现多个视频下载

from gevent import monkey
import gevent
import urllib.request
#有IO才做时需要这一句
monkey.patch_all()
def my_downLoad(file_name, url):
  print('GET: %s' % url)
  resp = urllib.request.urlopen(url)
  data = resp.read()
  with open(file_name, "wb") as f:
    f.write(data)
  print('%d bytes received from %s.' % (len(data), url))
gevent.joinall([
    gevent.spawn(my_downLoad, "1.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-08-%E3%80%90%E7%90%86%E8%A7%A3%E3%80%91%E5%87%BD%E6%95%B0%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93%EF%BC%88%E4%B8%80%EF%BC%89.mp4'),
    gevent.spawn(my_downLoad, "2.mp4", 'http://oo52bgdsl.bkt.clouddn.com/05day-03-%E3%80%90%E6%8E%8C%E6%8F%A1%E3%80%91%E6%97%A0%E5%8F%82%E6%95%B0%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC%E5%87%BD%E6%95%B0%E7%9A%84%E5%AE%9A%E4%B9%89%E3%80%81%E8%B0%83%E7%94%A8%28%E4%B8%8B%29.mp4'),
])

上面的url可以换为自己需要下载视频、音乐、图片等网址

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的作用域规则详解
Jan 30 Python
Python2/3中urllib库的一些常见用法
Dec 19 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
python操作mysql代码总结
Jun 01 Python
Python编程深度学习计算库之numpy
Dec 28 Python
python使用selenium实现批量文件下载
Mar 11 Python
Django处理多用户类型的方法介绍
May 18 Python
python面试题之列表声明实例分析
Jul 08 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
python小白学习包管理器pip安装
Jun 09 Python
Python通过Schema实现数据验证方式
Nov 12 Python
使用python绘制二维图形示例
Nov 22 #Python
python将邻接矩阵输出成图的实现
Nov 21 #Python
python实现小世界网络生成
Nov 21 #Python
使用Python的networkx绘制精美网络图教程
Nov 21 #Python
利用Python绘制Jazz网络图的例子
Nov 21 #Python
Python TCP通信客户端服务端代码实例
Nov 21 #Python
python绘制随机网络图形示例
Nov 21 #Python
You might like
Apache设置虚拟WEB
2006/10/09 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
python如何实现int函数的方法示例
2018/02/19 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
财务主管岗位职责
2014/02/28 职场文书
社区矫正工作方案
2014/06/04 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android