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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python imread、newaxis用法详解
Nov 04 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 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读取大文件示例分享(文件操作类)
2014/04/13 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP单例模式详细介绍
2015/07/01 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
Vue表单实例代码
2016/09/05 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
服装销售人员求职自我评价
2013/09/26 职场文书
函授本科自我鉴定
2014/02/04 职场文书
质量承诺书格式
2014/05/20 职场文书
募捐感谢信
2015/01/22 职场文书
事业单位聘任报告
2015/03/02 职场文书
管辖权异议上诉状
2015/05/23 职场文书
辞职信怎么写?
2019/05/21 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python