2011-02-25 40 views
4

也許我錯過了一些顯而易見的東西(它是一個星期五),但是有沒有辦法在greenlet上做os.fork()的等價物?我不一定希望分叉這個過程,我正在尋找greenlet並運行一組代碼,然後運行另一組代碼,但使用獨立的作用域(與os.fork()一樣)。Forking Greenlets

任何想法,或者我應該只是睡一會兒?

+0

如果這是可能的,那將會很棒。從系統的角度來看,這可能不會那麼困難:您可以從每個堆棧框架中複製'locals()'。 – amwinter 2013-06-09 04:10:29

回答

4

爲了從概念上分叉一個greenlet,只需創建另一個包裝你的「子功能」的greenlet。我也強烈建議gevent,它建立在greenlet上。 gevent代碼有一個fork()方法,但它會分叉Python進程,然後重新啓動子進程中的gevent。我敢打賭,你可以使用更多可讀代碼來實現你在gevent中做的任何事情,而不僅僅是greenlet。

+1

哦,耶穌,這是美麗的。 – mattbasta 2011-02-27 04:29:33

相關問題