1. libevent
libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用
select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent
based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,
似乎也有着非凡的性能
主要组成:libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各
种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个
异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端
centOS下 安装:
wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar zxvf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable
生成配置 ./configure -prefix=/usrbevent
编译安装 make && make install
测试libevent是否安装成功:ls -al /usr/lib | grep libevent, 有正常的文件及ok
2. greenlet
greenlet 包是 Stackless 的副产品,其将微线程称为 “tasklet” 。tasklet运行在伪并发中,使用channel进行同步数据交换。greenlet 跟stackless的最大区别是greenlet需要你自己来处理线程切换, 就是说,你需要自己指定现在执行哪个greenlet再执行哪个greenlet
安装 :easy_install greenlet(先需要自己安装easy_install)
测试是否安装成功:
#python
>>import greenlet 无报错就成功
3. gevent
gevent就是一个基于coroutine的python网络开发框架。协程是一种并发模型,但不同于thread
和callback,它的所有task都是可以在一个线程里面执行,然后可以通过在一个task里面主动放
弃执行来切换到另一个task执行,它的调度是程序级的,不像thread是系统级的调度。
Gevent最明显的特征就是它惊人的性能,尤其是当与传统线程解决方案对比的时候。在这一点上
,当负载超过一定程度的时候,异步I/O的性能会大大的优于基于独立线程的同步I/O这几乎是常
识了。同时Gevent提供了看上去非常像传统的基于线程模型编程的接口,但是在隐藏在下面做的
是异步I/O。更妙的是,它使得这一切透明
安装:下载最新gevent
# tar zxvf gevent-1.0.tar.gz
# cd gevent-1.0rc1
# python setup.py install
检测
#python
>>import gevent 无报错就成功
4.
用他们来做什么?
写网络程序,多线程处理,提高产品性能!
总结: 对于比较好库和开源软件,我们要不学习利用,他山之石可以攻玉 啊 ,加油 G0561
来源:oschina
链接:https://my.oschina.net/u/247498/blog/219402