子解释器是这个版本才实用的。以前所有解释器共用一个 GIL,现在每个解释器用一个。子解释器好像在 Python 1.x 版本就有了。
去掉 thread 模块不够,会带来兼容问题。需要结合线程和子解释器,再做个新模块,比如把 subintpter,里面同样实现 Thread 和 Process 的那些接口,还有 map/reduce 这些函数。
和 Process 一样,每个 SubInterpreter 都是独立环境,不怕 GIL. 但是既然都是同一个进程,迁移数据就会简单很多。从主解释器发送对象到另外一个解释器过去的话,可能只要加减个引用计数就行了——这里最好采用无锁实现。这个计划是正在实现中的:
https://peps.python.org/pep-0554/
【 在 lvsoft 的大作中提到: 】
: 子解释器这种都是小trick。
: 当年psyco就是用的一模一样的思路实现的。
: 去掉gil这个尝试值得支持,前提是不要有太大的副作用。
: ...................
--
修改:hgoldfish FROM 59.60.25.*
FROM 59.60.25.*