所以,我正在玩Stackless Python并且脑子里出现了一个问题,也许这是“假设的”或“常见的”知识,但我发现它实际上写在{{3}的任何地方{3}}
stackless site是否利用了多核CPU?在普通的Python中,你可以不断地使用GIL,并且(真正)使用多个核心,你需要使用多个进程,这对Stackless Python也是如此吗?
答案 0 :(得分:40)
Stackless python 不使用它运行的任何类型的多核环境。
这是对Stackless的一种常见误解,因为它允许程序员利用基于线程的编程。对于许多人来说,这两者是紧密相连的,但实际上是两件事。
内部Stackless使用循环调度程序来安排每个tasklet(微线程),但是没有任何tasklet可以与另一个同时运行。这意味着如果一个tasklet忙,其他的必须等到该tasklet放弃控制。默认情况下,调度程序不会停止任务并为另一个提供处理器时间。使用Stackless.schedule()或完成计算后,tasklet有责任将自己安排在调度队列的末尾。
所有tasklet因此以顺序方式执行,即使多列核心可用也是如此。
Stackless没有多核支持的原因是因为这使线程变得更容易。这就是无堆栈的全部内容:
from the official stackless website
Stackless Python是一个增强版 Python编程的版本 语言。它允许程序员 获得基于线程的好处 编程没有性能 和复杂性相关的问题 与传统的线程。该 Stackless增加的微线程 Python便宜又轻巧 方便,如果使用的话 适当地,给予以下好处:
- 改进了程序结构。
- 更易读的代码。
- 提高程序员的工作效率。
以下是有关多核和无堆栈的更多信息的link。