[OpenStack] Nova中的线程模型

本文介绍了OpenStack Nova中的线程模型,重点讲解了python协程库greenlet,包括协程的基本概念和greenlet的实现。接着探讨了基于协程的绿色线程库eventlet,其核心特性如sleep(), spawn()和wait()等。最后,阐述了Nova Service如何利用GreenThread进行业务封装,每个service维护一个greenthread池并使用event变量来协调各个任务。" 88737680,8021870,登录拦截器中session为空问题解析,"['前端开发', 'session管理', '拦截器', 'Ajax请求', 'URL配置']
摘要由CSDN通过智能技术生成

1) greenlet - python中的协程库

1.1) 什么是协程 (Coroutine)


Coroutine Wiki

http://en.wikipedia.org/wiki/Coroutine

  • CoRoutine是在Thread基础上的再次切分. 每一个Process可以包含多个Thread, 每个线程包含多个CoRoutine
  • 在任何时刻, 同一个Thread内只能有一个CoRoutine在运行.
  • 协程并不是真正的并发, 协程只是同一线程内不同代码的切换. 因此同一Thread内的CoRoutine之间如果访问共享数据, 不需要资源保护.
1.2) python中的 Coroutine 实现 - greenlet
greentlet 是python的Coroutine实现包. 用法可以参考官方的例子
from greenlet import greenlet

def test1():
    print 12
    gr2.switch()
    print 34

def test2():
    print 56
    gr1.switch()
    print 78

gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()

greenlet.greenlet 类 就是 Coroutine 的pyth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值