作者Tiberius (渴望平凡的幸福)
看板Python
标题Re: [问题] 关於stackless python的理解
时间Sun Apr 12 02:46:59 2009
※ 引述《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
1F:推 KSJ:好深奥的一篇文章(for me...) python真是广大~ 04/12 16:34