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