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 Web开发模板引擎优缺点总结
May 06 Python
Python pickle模块用法实例分析
May 27 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
python实现图片上添加图片
Nov 26 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
详解python内置模块urllib
Sep 09 Python
Python requests上传文件实现步骤
Sep 15 Python
Python logging自定义字段输出及打印颜色
Nov 30 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实现批量上传单个文件
2015/12/29 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
php表单处理操作
2017/11/16 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
JavaScript多线程详解
2015/08/12 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python实现基本线性数据结构
2016/08/22 Python
python求最大值最小值方法总结
2019/06/25 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python如何读取文件中图片格式
2020/01/13 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
MySQL面试题
2014/01/12 面试题
2015年档案管理员工作总结
2015/05/13 职场文书
2015年司法局工作总结
2015/05/22 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
法律服务所工作总结
2015/08/10 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书