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生成器的使用方法
Nov 21 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
Python图像处理之图片文字识别功能(OCR)
Jul 30 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
python3爬虫中引用Queue的实例讲解
Nov 24 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
Python全局变量用法实例分析
2016/07/19 Python
numpy返回array中元素的index方法
2018/06/27 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
python3 xpath和requests应用详解
2020/03/06 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
酒吧员工的岗位职责
2013/11/26 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
毕业典礼邀请函
2015/01/31 职场文书
工程部岗位职责范本
2015/04/11 职场文书
创建文明城市倡议书
2015/04/28 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python