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 相关文章推荐
centos系统升级python 2.7.3
Jul 03 Python
Python类的多重继承问题深入分析
Nov 09 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
Python实现excel转sqlite的方法
Jul 17 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
tensorflow多维张量计算实例
Feb 11 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
python的reverse函数翻转结果为None的问题
May 11 Python
pycharm全局搜索的具体步骤
Jul 28 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 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
用户的详细注册和判断
2006/10/09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
javascript整除实现代码
2010/11/23 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python字符转换
2008/09/06 Python
python链接Oracle数据库的方法
2015/06/28 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
Linux文件系统类型
2012/09/16 面试题
int和Integer有什么区别
2013/05/25 面试题
主持人演讲稿范文
2013/12/28 职场文书
社区安全检查制度
2014/02/03 职场文书
银行业务授权委托书
2014/10/10 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript