2011-06-30 74 views
5

協程是簡化併發編程的絕佳範例。大多數情況下,併發任務很容易並行化。在Go語言中,很容易使用goroutines來執行並行任務。有沒有辦法在Python中做同樣的事情,例如使用協程來創建進程並同步它們?在Python中使用協程進行並行編程

回答

3

是的,Python支持庫和通過生成器的協同程序:例如,請參閱Greenlet庫。此外,還有一個名爲Stackless Python的衍生產品,它內置了對若干併發編程功能的支持,例如微線程和通道。

請注意,在默認CPython中,全局解釋器鎖將只允許一個線程立即運行,這可能是一個問題。

2

如果你想使用標準的python解釋器,greenlet庫是要走的路。

至於GIL,它不應該是一個協程的問題。您可以將greenlet協程模型視爲在一個內核線程內運行的多個輕量級用戶空間「線程」。所以從GIL和OS的角度來看,它仍然是單線程的。