Stackless python和multicores?

thr*_*thr 24 python concurrency multithreading multicore python-stackless

所以,我正在玩Stackless Python并且脑子里出现了一个问题,也许这是"假设的"或"常见的"知识,但我发现它实际上写在无堆栈网站上的任何地方.

Stackless Python是否利用多核CPU?在普通的Python中,你有GIL不断出现并且(使用多个核心)需要使用多个进程,这对Stackless来说也是如此吗?

sve*_*ven 40

Stackless的Python做使用任何类型的多核环境下的运行上.
这是对Stackless的一种常见误解,因为它允许程序员利用基于线程的编程.对于许多人来说,这两者密切相关,但实际上是两件事.

Stackless内部使用循环调度程序来调度每个tasklet(微线程),但是没有tasklet可以与另一个同时运行.这意味着如果一个tasklet忙,其他的必须等到该tasklet放弃控制.默认情况下,调度程序不会停止任务并为另一个提供处理器时间.使用Stackless.schedule()或完成计算后,tasklet有责任将自己安排在调度队列的末尾.

因此,即使多列核心可用,所有的tasklet也以顺序方式执行.

Stackless之所以没有多核支持,是因为这样可以让线程变得更容易.这就是无堆栈的全部意义:

来自官方无网站

Stackless Python是Python编程语言的增强版本.它允许程序员从基于线程的编程中获益,而不会出现与传统线程相关的性能和复杂性问题.Stackless添加到Python的微线程是一种便宜且轻便的便利,如果使用得当,可以带来以下好处:

  • 改进了计划结构.
  • 更易读的代码.
  • 提高程序员的工作效率.

以下是有关多核和无堆栈的更多信息的链接.

  • 他们应该把你的第一句话放在他们的网站上。 (2认同)