--
I like python!
UliPad <<The Python Editor>>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou
好象是这样的,所以如果要利用多处理器还是使用多进程。
ruby的问题与python一样。但python目前还解决不
了,因为有些模块是c的缘故。使用多线程还是有意义的,因为有些处理不使用多线程就很难处理,象GUI程序,游戏之类的,虽然不是真正的,但是还是可以的。
线程比起协程编程要简单得多,协程麻烦。对于阻塞调用,直接使用python的socket阻塞方式在线程中进行处理好象并没有问题。象UliPad就使用了阻塞线程没有什么问题。具体本地线程的差异没有太深入地了解。现在没有什么感觉。我想差别可能只是性能上的差别。
python的线程是不是native线程不好说。
> 我是想讨论下微线程还存在哪些限制。
> 网络程序只要使用异步代替阻塞的socket调用就可以使用微线程了,而就象
> 这个例子所展示的那样(尤其是最后那个TestMonkeyPatch函数的内容),这个过程可以相当透明的。
> 而让GUI框架支持微线程所存在问题好像老大们以前也讨论过 好像还满复杂的,没看得很明白。
>
你所说的微线程是说协程吗?
你所说的微线程是说协程吗?
恩
--
http://codeplayer.blogspot.com/
我来说一下我的经验,在我的使用经验中,混合开发的线程代码中,操作Python虚拟机的是一部分,而大量密集运算或I/O的代码都是纯C++的,我只需要在调用Python API的时候加锁,在调用完毕后及时解锁。可以最大限度的利用资源。如果是协程,整个程序,包括主子过程,无论是C++部分还是Python部分都要等待,效率要低得多。协程可能在某些特定的流程上显得清晰,但它不是真正的并发过程。LUA和Ruby大肆追捧协程,在我看来恐怕和它们还没有实现真正的并发有关。而Python现在有进程/子进程/多解释器线程/单解释器多线程/协程的完整并发体系,你可以选择任何一种适合自己的。
另外,根据Python的文档,即使你加了锁,解释器也不会让锁定的线程一直独占解释器,在执行一定的指令数以后,仍然会挂起并轮询线程集。
在多个解释器下面象pyint这类使用到内存池的对象,不是还共用一个内存池吗?这点我一直很疑惑。这样子多个解释器之间怎么处理?好像多个解释器没有同步吧。