Eventlet Greenlet

Eventlet是一个用来处理和网络相关的python网络库,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做greenthread。

所谓并发,就是开启了多个greenthread,并且对这些greenthread进行管理,以实现非阻塞式的I/O。

关于协程,大致可以理解成允许子程序可以多次暂停和恢复执行,是实现多任务的一种有效手段,

Eventlet的基础是greenlet,这是实现"协程(Coroutine)" 的基础。

协程又被称作 "微线程“,简单点说就是在一个原生线程上通过"拷贝"和"切换" 堆栈帧数据来实现执行多个工作,

看上去和传统的"单CPU,多线程(Threading)"执行方式差不多。

在 Python 中,使用协程来做并发是对于系统资源消耗最小,可以最大化的做高并发,但是,需要我们自己来做调度,操作系统不会主动调度任务。

时间: 2024-10-07 16:33:56

Eventlet Greenlet的相关文章

python coroutine的学习跟总结[转]

简介 因为最近一段时间需要研究一些openstack相关的东西,在阅读一些相关代码的时候碰到很多python特定的一些特性,比如generator, coroutine以及一些相关的类库,比如eventlet, greenlet.在openstack里引用的第三方类库非常多,这些特性和类库看起来还比较复杂.如果需要对openstack里面某些特性的实现非常熟悉的话,就需要对这些牵涉到的基础的东西有个很好的了解.这里就针对coroutine的特性和它的使用做一个总结. coroutine的定义和使

点滴记录——CentOS 6.4中使用virtualenv安装swift

转载请说明出处:http://blog.csdn.net/cywosp/article/details/42150141 简述 在开发过程中,经常需要使用各种第三方库,而且python又提供了pip,easy_install等工具来简化库的安装,所以很容易就会在系统python的site-packages目录中装满各种各样的库,但是这样在下面几种情况下会有问题: 1.没有site-packages目录的写权限,比如共享主机 2.不同项目依赖同一个库的不同版本,而这两个版本又不向下兼容 3.在li

openstack中eventlet使用

openstack中使用eventlet的协程来实现并发. 第一种,使用eventlet.GreenPool来管理绿色线程 如l3-agent在开启了8个绿色线程来处理router消息 def _process_routers_loop(self): pool = eventlet.GreenPool(size=8) while True: pool.spawn_n(self._process_router_update) 第二种是在oslo.messaging中创建接消息的进程直接创建绿色线程

练习PYTHON之EVENTLET

以下是重点,要会运用: eventlet是一个用来处理和网络相关的python库函数,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做 greenthread(绿色线程).所谓并发,就是开启了多个greenthread,并且对这些greenthread进行管理,以实现非阻塞式的 I/O.比如说用eventlet可以很方便的写一个性能很好的web服务器,或者是一个效率很高的网页爬虫,这都归功于eventlet的“绿色线程”,以及对“绿色线程”的管理机制.更让人不可思议的是,even

OpenStack协同并发 eventlet

今天听easystack一哥们讲nova协同并发,结合自己之前的认识.回顾一下openstack eventlet. OpenStack作为热门的开源云平台,本身代码当然得支持高并发. 首先讲讲python的并发,python中的并发有:进程.线程.协程(Coroutines). 进程和线程大家都比较清楚了,那什么是协程,协程介绍如下: 协程和线程比较像,每个协程都有?己的私有stack和局部变量 一个线程内可以有很多个协程 多个线程可以同时运行.但在一个线程内,同一时间只有一个协程在运行,无须

Python——eventlet.hubs

Hub构成了 Eventlet 的事件循环,它分发 I/O 事件.调度 greenthread.Hub的存在使得协程被提升为 greenthreads. Eventlet 有多种hub的实现,所以在使用之前应该选择最适合自己系统的实现: epolls 要求 Python 2.6 或 python-epoll 包,同时只支持 Linux.这是最快的纯Python hub. poll 所有支持它的平台均可. selects 哪都能用. pyevent 基于libevent的后端,最快!默认是不被支持

Python——eventlet.backdoor

eventlet.backdoor 是正在运行中的进程内的 Pyhon 交互解释器. 该模块便于检测一个长期运行进程的运行状态,提供了一种可以不阻塞应用正常操作的 Pyhon 交互解释器,从而极大地方便了调试.性能调优或仅仅是了解事情是怎么运转的. 在应用中孵化一个协程,这个协程运行一个 backdoor_server ,这个 backdoor_server 中有一个处于监听状态的套接字: eventlet.spawn(backdoor.backdoor_server, eventlet.lis

eventlet

项目中要模拟openstack的swift的多路write功能.初步设想是用python的eventlet来实现多线程.比如在write的时候要同时写入两个storage,就用eventlet生成2个线程,两个线程并行的去write,各自返回.但是我刚才在查eventlet的时候发现eventlet是基于greenlet的.也就是说eventlet的线程不是真正的多线程.真正的多线程是产生2个线程,而eventlet是在一个线程中虚拟出2个线程.真正的线程先去之行任务a,在a遇到阻塞的时候再去执

greenlet:轻量级的并发编程

1 关于greenlet greelet指的是使用一个任务调度器和一些生成器或者协程实现协作式用户空间多线程的一种伪并发机制,即所谓的微线程. greelet机制的主要思想是:生成器函数或者协程函数中的yield语句挂起函数的执行,直到稍后使用next()或send()操作进行恢复为止.可以使用一个调度器循环在一组生成器函数之间协作多个任务. 网络框架的几种基本的网络I/O模型: 阻塞式单线程:这是最基本的I/O模型,只有在处理完一个请求之后才会处理下一个请求.它的缺点是效能差,如果有请求阻塞住