Re: [問題] 關於stackless python的理解
※ 引述《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
04/12 16:34, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章