python greenlet 輕量級平行處理

來源:互聯網
上載者:User

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 greenletdef test1():    print 12    gr2.switch()    print 34def test2():    print 56    gr1.switch()    print 78gr1 = greenlet(test1)gr2 = greenlet(test2)gr1.switch()

這裡, 預設的這個環境是一個main greenlet, 在它的內部建立了gr1, gr2 兩個子greenlet, gr1.switch 讓gr1開始執行, gr1 首先列印12 然後主動將控制權交給 gr2 ,列印 56 然後,gr2又將控制權交給了gr1, 列印34, gr1執行完了後會產生 GreenletExit 時間退回到父greenlet,這裡是main, 執行完畢。 不會列印 78.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.