对于 gevent 的总结
来源:互联网 发布:深圳网络诈骗举报 编辑:程序博客网 时间:2024/06/07 09:11
这两天在研究 gevent 和 zeromq 两个库。 zeromq 暂时不说, 一直在用 Python 搭建一些快速服务原型,所以对 gevent 做一个总结。
gevent 的核心在于并发, 它的技术核心主要表现在协程(coroutine)层面。利用libev 库帮助python在同一个线程内以极小的代价高效的管理多个 coroutine。
本质上 gevent 在同一个时间片内只能处理一段代码,虽然表现层面上看起来可以处理大量的并发 coroutine但是如果不是在处理密集型IO的应用上其作用是相当有限。
因为是gevent 是利用到 libev对IO的异步读写能力,在coroutine内部发生无法立即完成的操作时,将时间片切换到其他的 coroutine。 这些操作包括了(sleep, write, read以及自建的 Queue, Event,Lock 等等)
虽然 gevent 的 coroutine 的执行顺序是确定性的(不同于真正的线程竞争CPU时间片),但是同样带来了资源竞争的问题,所以在编写
gevent 的代码时同样需要对 多个 coroutine 访问的数据进行枷锁操作。
暂时了解就这么多。
一直以来,我的习惯不太依赖于一个服务去带动大量的并发连接,而是喜欢将并发均衡负载在多个进程上,而将逻辑处理扔到后端进程进行处理。 这样代码可以写的简单,所以一直都是都是用 Python 自带的asychat 框架去处理的,所以暂时还看不到对于实际业务上的帮助。
0 0
- 对于 gevent 的总结
- 对于编程的总结
- 对于异常的总结
- 对于poll的总结
- 对于algorithm101的总结
- 对于algorithm102的总结
- 对于检索的总结
- 对于背包的总结
- [python]gevent的安装
- gevent的调度流程
- Gevent 的 KeyError
- gevent的安装过程
- gevent
- GEVENT
- gevent
- gevent
- 对于DWR的简单总结
- 对于DWR的简单总结
- 响应式布局
- Android Studio——用Android访问本地站点---(localhost,10.0.2.2)要区别
- leetcode 319 Bulb Switcher
- springMVC入门
- Android读取SQLite数据库中的中文
- 对于 gevent 的总结
- C语言:快速排序
- Eclipse集成Tomcat(web容器)
- IOS 设置多个button,点击切换颜色
- 求某范围质数 J2EE版及JS版
- Java 正则 包含匹配 和 全匹配
- Android之Bitmap的内存优化方案总结
- Android-Data Storage
- spring的@Transactional到底是怎么工作的