Python 的一些网络库(感谢Arbow)
来自:http://hi.baidu.com/arbow/blog/item/6cfcd13bcc8056ed15cecbc1.html
一直在想,要是Stackless实现的Web Server中要实现反向代理,该怎么办。Http请求是绝对不能阻塞的,不然就没有意义了。
结果给我找到两个库:
1.stacklesssocket
http://stacklessexamples.googlecode.com/svn/trunk/examples/networking/stacklesssocket.py
主要使用了asyncore库,将原先需要阻塞的socket库调用改成了异步。
2. httplib2
http://code.google.com/p/httplib2/
与python标准库里面的urllib2,httplib相比,这玩意主要支持Keep-Alive!在大量请求时,可以复用连接,可以节省很多系统开销。
随手改了下张教主的代码(http://zsp.javaeye.com/blog/261132)
import stackless
import stacklesssocket
stacklesssocket.install()
import urllib2, httplib, httplib2
LOOP = 1000
def test_urllib2(i):
print "urllib2 test", i
for i in xrange(0, LOOP):
urllib2.urlopen("http://www.youdao.com").read()[:80]
print "urllib2 test", i , "finished"
def test_http(i):
print "http test", i
for i in xrange(0, LOOP):
conn = httplib.HTTPConnection("www.youdao.com")
conn.request("GET", "/")
conn.getresponse().read()[:80]
conn.close()
def test_http2(i):
print "httplib2 test", i
http = httplib2.Http()
for i in xrange(0, LOOP):
resp, content = http.request("http://www.youdao.com/")
#print content[:80]
for i in range(5):
#stackless.tasklet(test_urllib2)(i)
stackless.tasklet(test_http2)(i)
stackless.run()
跑了下,使用urllib2/httplib时,客户端的网络端口不停更换,流量达到几十K,在使用httplib2时,就那5个连接,流量只有10K左右。两者的处理时间基本接近,可以认为网络延迟不高,因此多出来的N*3次握手所占时间不多。
好了,有了这2个库,世界更加美好了,接下来可以做一些好玩的东东:D
3.http://pynetlibs.sourceforge.net/default.html
4.http://code.google.com/p/tinynl/
转载于:https://www.cnblogs.com/vilyLei/articles/2113260.html
Python 的一些网络库(感谢Arbow)相关推荐
- python模块介绍-gevent介绍:基于协程的网络库
2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...
- Python实战之网络与爬虫篇-----如何查看用户Star了哪些库
Python实战之网络与爬虫篇-----如何查看用户Star了哪些库 1.问题求解 试着用前面所学的知识查看用户Codingchaozhang 都Starred了哪些库,并且自动在游览器中打开这些库的 ...
- Python下的网络抓包库
一直以来对于Python下的网络抓包库很疑惑,搞不清楚pylibpcap.pypcap.pycap这些库之间是什么关系,混沌了很长时间,在网上G了很久慢慢搞清楚了,其实这些都是libpcap的Pyth ...
- 《Linux多线程服务端编程:使用muduo C++网络库》书摘6.6.2节
6.6.2 常见的并发网络服务程序设计方案 W. Richard Stevens 的<UNIX 网络编程(第2 版)>第27 章"Client-ServerDesign Alte ...
- 《Linux多线程服务端编程:使用muduoC++网络库》学习笔记
文章目录 第1章 线程安全的对象生命期管理 1.1 当析构函数遇到多线程 1.1.1 线程安全的定义 1.1.3 线程安全实例 1.2 对象的创建很简单 1.3 销毁很难 1.4 线程安全的Obser ...
- 国产网络库libhv开源四周年回顾
libhv是一个跨平台的c/c++网络库,本文写在libhv开源四周年之际,借机回顾了libhv的发展历程. github地址:https://github.com/ithewei/libhv 文章目 ...
- python调用海康威视sdk库_HikVision SDK: C++ 至 Python
海康威视(HikVision)在视频解决方案的地位毋庸置疑,起码属于国内业界顶尖水平.选择他家设备主要有两个原因:首要是因为他家产品贵,这确实是选择的首要原因(毕竟经费是--咳,打住):另一个重要原因 ...
- 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)
基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...
- python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码
python中nlp的库 by Praveen Dubey 通过Praveen Dubey 单词词汇入门以及如何在Python中为NLP 编写代码的简介 (An introduction to Bag ...
- 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!
编译 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...
最新文章
- Matlab与线性代数 -- 向量的范数
- 美团十年,支撑最大规模外卖配送的一站式机器学习平台如何炼成?
- AMS重要的数据结构解析(二):TaskRecord
- cmake 编译Release版本
- 如何用CSS让一个容器水平垂直居中?
- 单元测试反模式,完整列表
- Spark系列—02 Spark程序牛刀小试
- 奇异值分解(Singular Value Decomposition,SVD)
- 广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务
- 2017.12.19
- 江苏大学考研885程序设计 - 填空选择知识点
- 计算机网络 第一章 计算机网络体系结构
- 无法在此设备上查看受保护内容_细说丨你想要的Excel保护与加密都在这里
- c语言机试编程下载,C语言机试编程题库
- OSPF —— 重分发(配置命令)
- Java 搭建srs流媒体服务器,并使用ffmpeg推流
- 北方经贸杂志北方经贸杂志社北方经贸编辑部2022年第10期目录
- 数据库容灾技术之--数据容灾技术比较
- GPS导航知识——DGPS
- 零成本、零流量,我是如何空手反套白狼?
热门文章
- 俄罗斯一款地图软件无意曝光300多个军事基地
- 最小化JavaScript代码
- ES6新语法之let关键字;有别于传统关键字var的使用
- ubuntu 14.04 設定hostname
- TechSmith Camtasia Mac v2021屏幕录制剪辑软件
- IDM(Internet Download Manager)下载各类安装包(github代码、python包)、软件、视频、文档的神器,居家必备良药
- Linus 怒批 GitHub:制造了毫无用处的垃圾合并信息!
- 为什么 Nginx 比 Apache 更牛叉?
- 原创整理:92份面试题,累计3625页,肝的太累了!
- 死磕单点登录的实现原理....