OpenStack Nova中的執行緒模型

2021-06-23 10:06:05 字數 1130 閱讀 9375

1.1) 什麼是協程 (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 的python 實現, 不同的 greenlet協程之間, 可以呼叫switch 函式來做切換.

從這段**也可以看出來, greenlet只實現了基礎的coroutine協程功能. 如果想在專案中直接使用, 我們還要

所以我們就需要使用eventlet庫

eventlet 庫是python下面的乙個多執行緒 io框架, eventlet通過對epoll 和 greenlet的封裝, 實現了 io復用, 執行緒池等等高階概念

通過eventlet, 我們就不用直接和greenlet庫打交道了.

eventlet中經常使用的幾個類

greenthread: 綠色執行緒. greenthread 是 eventlet 類的子類, 所以 greenthread 就是乙個協程 coroutine

greenpool: 綠色執行緒池. 包含了1到n個greenthread. 

event: 事件類

semaphore: 訊號量

nova service則是對eventlet包的進一步封裝

如何拓展OpenStack nova

openstack nova api有核心資源與擴充套件資源,這裡記錄的是如何拓展openstack nova api的拓展資源 1.nova api openstack compute contrib目錄下是nova的擴充套件資源,在此目錄下建立我們的 檔名為my extension.py,應為類...

openstack nova 虛機映象後端提取

1.nova 建立的虛機後端目錄 其中的base是虛機基礎映象,建立虛機會根據這個基礎映象進行派生映象,命令如下 qemu img create f qcow2 o backing file var lib nova instances base 1406c8d8631815b4e071939654...

Python中的descriptor中的一點疑問

在我的印象中,類中的函式是可以有兩種呼叫方式的,如下 class b def func self return 10 b b b.func b.func b 於是,在之前研究descriptor的時候,我就有了幾點困惑 我將 更換成了如下兩個版本 版本1 import time class lazy...