为什么Python没有真正的轻量级线程?

10 投票
2 回答
6378 浏览
提问于 2025-04-15 17:05

我刚接触Python,感觉它的多进程和线程模块并不是特别有趣,而且遇到了一些和Perl中的线程类似的问题。请问有没有什么技术原因导致解释器不能使用像posix线程这样的轻量级线程,从而实现一个真正能在多个核心上高效运行的线程实现呢?

2 个回答

0

皮奥特,

你可以看看 stackless(http://www.stackless.com/),这是一个修改过的 Python 版本,它可以以轻量级的任务方式运行,类似于 Erlang 的消息传递方式。

我不太确定你是否在寻找多核解决方案,但在 stackless 里探索一下,可能会找到你想要的东西。

23

确实 在使用 POSIX 线程。问题出在 GIL 上。

需要注意的是,GIL 并不是 Python 语言规范的一部分——它是 CPython 这个具体实现中的一部分。例如,Jython 就没有这个问题。

话说回来,你有没有了解过 Stackless 呢?

撰写回答