psyco是直接加载一个独立的魔改版python interpreter,这样才能实现jit。这种搞法当然是独立GIL的。
兼容性很容易啊,既然要搞纯单线程预言了,那就做个假的dummy thread/process好了。
【 在 hgoldfish 的大作中提到: 】
: 子解释器是这个版本才实用的。以前所有解释器共用一个 GIL,现在每个解释器用一个。子解释器好像在 Python 1.x 版本就有了。
: 去掉 thread 模块不够,会带来兼容问题。需要结合线程和子解释器,再做个新模块,比如把 subintpter,里面同样实现 Thread 和 Process 的那些接口,还有 map/reduce 这些函数。
: 和 Process 一样,每个 SubInterpreter 都是独立环境,不怕 GIL. 但是既然都是同一个进程,迁移数据就会简单很多。从主解释器发送对象到另外一个解释器过去的话,可能只要加减个引用计数就行了——这里最好采用无锁实现。这个计划是正在实现中的:
: ...................
--
FROM 180.111.51.*