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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
python实现web方式logview的方法
Aug 10 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
Python 通过URL打开图片实例详解
Jun 01 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
Python数据类型之Tuple元组实例详解
May 08 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
python和go语言的区别是什么
Jul 20 Python
Python实现byte转integer
Jun 03 Python
Python字典的基础操作
Nov 01 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
php 删除无限级目录与文件代码共享
2008/11/22 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
jQuery定义插件的方法
2015/12/18 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python3.6简单反射操作示例
2018/06/14 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python实现KNN分类算法
2019/10/16 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
数控技术专科生自我评价
2014/01/08 职场文书
大学生村官任职感言
2014/01/09 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
战略合作意向书范本
2014/04/01 职场文书
初一学生期末评语
2014/04/24 职场文书
普通党员个人整改措施
2014/10/27 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
汉字听写大会观后感
2015/06/12 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书