2011-02-25 41 views

回答

6

你可以谷歌「Python協同程序」,並獲得很多好的信息。 Here is a presentation(PDF)我前段時間跑過的那段話似乎對我如何以及爲什麼很好。 source code is also available(這包括PDF,所以如果你想要兩者,只需下載它)。此演示文稿的home page已鏈接到各個源文件。

+0

+1表示鏈接。很棒的閱讀。 – RHSeeger

3

你知道發電機是什麼嗎?一個函數,可以停止它的處理,以便它可以在恢復生成下一個值之前返回(「yield」)一個值。

那麼,協程(雖然PEP使用術語「cofunction」)就是這樣,除了它不需要產生任何東西,它可以轉換到另一個協程(在語言中是「cocall」的PEP)。這種功能有各種各樣的用途,比如能夠構建本質上屬於你自己的輕量級協作線程工具(我已經看到一些漂亮的模板庫也是這樣做的),儘管這樣做可以特別有用在從coroutines調用的函數之間進行轉換。

請注意,有沒有需要協同程序。你總是可以用不同的方式編寫代碼,沒有它們。這樣做有時要複雜得多(因爲需要更明確的狀態管理)。

1

該函數的建議只是清理了蟒蛇現有的協同工具,最先知道的是基於發生器(與canonical presentation鏈接)。 PEP確實解釋了motivations:使錯誤消息更加明確,避免了由於yield關鍵字的存在而確定函數是否爲生成器的混亂情況,並且使協調之間更容易委派。

相關問題