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...