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 调用VC++的动态链接库(DLL)
Sep 06 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
python实现猜拳小游戏
Apr 05 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python实现视频压缩功能
Dec 18 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 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.ini 配置文件的深入解析
2013/06/17 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
Laravel实现表单提交
2017/05/07 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
护士自荐信范文
2013/12/15 职场文书
安全施工标语
2014/06/07 职场文书
在职员工证明书
2014/09/19 职场文书
三方协议书
2015/01/27 职场文书
会计试用期自我评价
2015/03/10 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
Redis读写分离搭建的完整步骤
2021/09/14 Redis