python基于gevent实现并发下载器代码实例_python

来源:脚本之家  责任编辑:小易  

PropertyPlaceholderConfigurerp:locations-ref="locationsp:order="1"/>www.zgxue.com防采集请勿采集本网。

这篇文章主要介绍了python基于gevent实现并发下载器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一种技术的出现必然是为了解决某种问题,gevent是为了解决什么问题呢,设想下面这种情况。你要做一个千人在线的Web聊天室,聊天室需要能够实时来收发消息,但是HTTP是无状态的,就是说服务器没有

并发下载原理

中文的还是很少见,gevent的文档很短,用字典加全文翻译啃一下也不麻烦。有问题去华蟒用户组邮件列表问。RPyC不熟。

1.gevent.server.StreamServer 会针对每个客户端连接启动一个greenlet处理,要注意的是,如果不循环监听(阻塞在read), 每个greenlet会在完成后立即退出,从而导致客户端退出(发送FIN_ACK给客户

import geventfrom gevent import monkeyimport urllib.requestmonkey.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, "https://www.baidu.com"), gevent.spawn(my_download, "https://www.cnblogs.com"), gevent.spawn(my_download, "https://www.huya.com") ])

翻译:gevent是一个基于协程的Python网络库。我们先理解这句,也是这次学习的重点—协程。wiki描述协程 与子例程一样,协程也是一种程序组件。相对子例程而言,协程更为一般和灵活,但在实践中使用没有

运行结果:

用爬虫跟踪下一页的方法是自己模拟点击下一页连接,然后发出新的请求;参考例子如下: item1=Item() yield item1 item2=Item() yield item2 req=Request(url='下一页的链接',callback=self.parse

GET: https://www.baidu.comGET: https://www.cnblogs.comGET: https://www.huya.com227 bytes received from https://www.baidu.com.46411 bytes received from https://www.cnblogs.com.353563 bytes received from https://www.huya.com.

实现多张图片同时下载

import geventfrom gevent import monkeyimport urllib.requestmonkey.patch_all()def my_download(url, image_path): print('GET: %s' % url) resp = urllib.request.urlopen(url) data = resp.read() print('%d bytes received from %s.' % (len(data), url)) with open(image_path, "wb") as f: f.write(data)gevent.joinall([ gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1099/4c/73ff3e6ce165fb658b2082d4d126c6_2168_1544414129.jpg", "1.jpg"), gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1020/03/7949816c55f45b9adc9f03d9330af3_2168_1542941499.jpg", "2.jpg"), gevent.spawn(my_download, "https://huyaimg.msstatic.com/cdnimage/anchorpost/1061/55/8071537fa10120c43c5a1359a88530_2168_1545302709.jpg", "3.jpg"),])

Socket.IO是一个可以让浏览器与服务器实现实时通信的类Websocket的抽象。Gevent-socket是Socketio协议的一个python实现。参考LearnBoost开发的Node.js的Socket.IO服务器端实现,现在已经有多种语言的Socket.IO server实现了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python 协程 gevent原理与用法分析
  • python生成器/yield协程/gevent写简单的图片下载器功能示例
  • python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
  • python使用grequests(gevent+requests)并发发送请求过程解析
  • python的网络编程库gevent的安装及使用技巧
  • python的gevent框架的入门教程
  • python greenlet和gevent使用代码示例解析
  • 探秘tensorflow 和 numpy 的 broadcasting 机制
  • 详解python中的hashlib模块的使用
  • python返回昨天日期的方法
  • django高并发负载均衡实现原理详解
  • python使用progressbar模块实现的显示进度条功能
  • 解决python os.mkdir创建目录失败的问题
  • pycharm无法使用已经安装selenium的解决方法
  • python实现电子词典
  • python range()函数取反序遍历sequence的方法
  • python常见数据结构详解
  • python gevent threading 有什么区别
  • 有哪些应用场景适合用python的gevent来完成
  • 有哪些应用场景适合用python的gevent来完成
  • 有哪些应用场景适合用python的gevent来完成
  • 有哪些应用场景适合用python的gevent来完成
  • 我想学习python关于Gevent和RPyC方面的知识,去哪里学习好呢?要中文的。。。
  • python gevent 能解决并发状态吗
  • python协程gevent怎么用
  • 新手一枚,用 python gevent 抓取网页碰到了一些问题,求解答
  • 为什么 python 多线程还要比 gevent 要快一点
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python 协程 gevent原理与用法分析python生成器/yield协程/gevent写简单的图片下载器功能示例python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解python使用grequests(gevent+requests)并发发送请求过程解析python的网络编程库gevent的安装及使用技巧python的gevent框架的入门教程python greenlet和gevent使用代码示例解析探秘tensorflow 和 numpy 的 broadcasting 机制详解python中的hashlib模块的使用python返回昨天日期的方法django高并发负载均衡实现原理详解python使用progressbar模块实现的显示进度条功能解决python os.mkdir创建目录失败的问题pycharm无法使用已经安装selenium的解决方法python实现电子词典python range()函数取反序遍历sequence的方法python常见数据结构详解python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython逐行读取文件内容的三种方pthon批量处理将pdb文件生成dssp文件如何使用selenium和requests组合实现登录python队列queue模块详解tensorflow 用矩阵运算替换for循环 用tf.python3实现将一维数组按标准长度分隔为二使用pygame写一个古诗词填空通关游戏flask之请求钩子的实现django后台admin的使用详解python中asyncio与aiohttp入门教程python基础之列表常见操作经典实例详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved