Stackless python和multicores?

时间:2008-12-18 08:51:23

标签: python multithreading concurrency multicore python-stackless

所以,我正在玩Stackless Python并且脑子里出现了一个问题,也许这是“假设的”或“常见的”知识,但我发现它实际上写在{{3}的任何地方{3}}

stackless site是否利用了多核CPU?在普通的Python中,你可以不断地使用GIL,并且(真正)使用多个核心,你需要使用多个进程,这对Stackless Python也是如此吗?

1 个答案:

答案 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