python greenlet軽量レベル並列処理


Luo Weifeng 2011-8-28
並列化処理は現在重視されており、多くの場合、並列計算はシステムのスループットを大幅に向上させることができ、特に現在のマルチコアマルチプロセッサの時代にはlispのような古い言語が再び取り戻され、関数式プログラミングもますます流行している.ここではpythonの並列処理のライブラリ:greenletを紹介します.pythonにはstacklessという有名なライブラリがあり、同時処理に使われています.主にtaskletというマイクロスレッドのものを作りましたが、greenletとstacklessの最大の違いは、彼が軽量級なことです.いいえ、最大の違いはgreenletがスレッド切替を自分で処理する必要があることです.つまり、今どのgreenletを実行してどのgreenletを実行するかを自分で指定する必要があります.くだらないことは言わないで、demoを貼ってください.
以下を参照してください.http://codespeak.net/py/0.9.2/greenlet.html
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()

ここで、デフォルトのこの環境はmain greenletであり、その内部にgr 1,gr 2のサブgreenlet,gr 1が作成されている.switchはgr 1に実行を開始させ、gr 1はまず12を印刷してから自発的にgr 2に制御権を渡し、56を印刷してから、gr 2はまたgr 1に制御権を渡し、34を印刷し、gr 1は実行が終わった後にGreenletExit時間が発生して親greenletに戻り、ここはmainで、実行が完了した.印刷できません.