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将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
详解Python命令行解析工具Argparse
Apr 20 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
python入门教程 python入门神图一张
Mar 05 Python
django启动uwsgi报错的解决方法
Apr 08 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Python 循环读取数据内存不足的解决方案
May 25 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实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP学习记录之数组函数
2018/06/01 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
js 操作符实例代码
2009/10/24 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python输出各行命令详解
2018/02/01 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python进行特征提取的示例代码
2020/10/15 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
外语系毕业生找工作的求职信
2013/11/28 职场文书
建筑人员岗位职责
2013/12/25 职场文书
《画风》教学反思
2014/04/16 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
护理专科学生自荐书
2014/07/05 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js