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切换pip安装源的方法详解
Nov 18 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
python实现n个数中选出m个数的方法
Nov 13 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
python接入支付宝的实例操作
Jul 20 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
如何利用python发送邮件
Sep 26 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
javascript中new关键字详解
2015/12/14 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
wxPython中listbox用法实例详解
2015/06/01 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
mac系统安装Python3初体验
2018/01/02 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
教育专业个人求职信
2013/12/02 职场文书
财政局长自荐信范文
2013/12/22 职场文书
户籍证明的格式
2014/01/13 职场文书
付款委托书范本
2014/04/04 职场文书
机关职员工作检讨书
2014/10/23 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
六年级作文之预言作文
2019/10/25 职场文书