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下的多进程编程
Apr 28 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
TensorFlow实现自定义Op方式
Feb 04 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
基于Python爬取股票数据过程详解
Oct 21 Python
selenium自动化测试入门实战
Dec 21 Python
全网非常详细的pytest配置文件
Jul 15 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提交后跳转
2013/06/23 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
2017/12/09 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
python如何生成各种随机分布图
2018/08/27 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
使用python实现kNN分类算法
2019/10/16 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
大二自我鉴定范文
2013/10/05 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
人资专员岗位职责
2014/04/04 职场文书
小班下学期评语
2014/05/04 职场文书
年度考核表个人总结
2015/03/06 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python