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 web框架学习笔记
May 03 Python
python线程、进程和协程详解
Jul 19 Python
Pandas标记删除重复记录的方法
Apr 08 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
pytorch的batch normalize使用详解
Jan 15 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
python Canny边缘检测算法的实现
Apr 24 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 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数组函数array_merge(必看篇)
2017/05/25 PHP
php-app开发接口加密详解
2018/04/18 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
layui表格实现代码
2017/05/20 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python实现简单成绩录入系统
2019/09/19 Python
如何解决python多种版本冲突问题
2020/10/13 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
《谁的本领大》教后反思
2014/04/25 职场文书
导师评语大全
2014/04/26 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
跳蚤市场口号
2014/06/13 职场文书
应聘护士求职信
2014/07/21 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Python first-order-model实现让照片动起来
2022/06/25 Python