Re: [問題] 關於stackless python的理解

看板Python作者 (渴望平凡的幸福)時間16年前 (2009/04/12 02:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《StubbornLin (Victor)》之銘言: : 他從頭到尾可能只有一個 : stackless.run()的main thread在跑 : 而會對於tasklet排程 決定什麼時候要跑哪個tasklet : 就和twisted的reactor.run()類似 yes : 但是tasklet可以呼叫stackless.schedule() : 所以就等於可以在很多不同的tasklet中跳來跳去 這就是最主要的好處 ;) : 如果只有這樣,當某個tasklet做很吃重的工作時 : 應該也會像是reactor.run遇到某個在main thread裡呼叫吃重工作的程式一樣 : 其它task在main thread的工作結束之前就沒辦法完成 沒有錯 : 比起erlang可以將任務丟給不同的機器做 : twisted可以把任務丟給thread pool : stackless在這樣看來好像只有單一個process在跑event loop而已 正確 : 是這樣嗎? 那他的好處又是在哪裡? 可以 schedule(), 做 continuation XD 其實官方的 generator, yield 就是從 stackless 的 continuation 學過來的 用目前的 yield 語法寫起來比 stackless 輕鬆很多 ... stackless 的賣點是它提供一整套 tasklet (lightweight thread) 的機制, 可以用來寫執行一般運算的 tasklet, 然後讓它平行執行, 做處理流程控制 這些用現在 python 提供的 yield 理論上應該也可以做得到, 只是要多寫不少東西 :p 單寫網路程式的話, 確實是不如直接用 twisted 做做看 ... : 直接用twsited似乎反而比較輕鬆 : 而且好像也沒有用到多核心的好處 這是 python 目前很痛的一點 :p 只能用 subprocess 硬幹 ... 不過 erlang 那套平行處理模式應該不難用 python 做出來 基本上就是拿 multiprocessing.Queue 來用 然後記得「東西丟進 Queue 之後再也別過問」這樣就差不多了 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.40.88

04/12 16:34, , 1F
好深奧的一篇文章(for me...) python真是廣大~
04/12 16:34, 1F
文章代碼(AID): #19uEMag5 (Python)
文章代碼(AID): #19uEMag5 (Python)