因此,我在玩Stackless Python并在脑海中弹出一个问题,也许这是“假定”或“常见”知识,但我找不到它实际上写在stackless site上的任何地方。
Stackless Python是否可以利用多核CPU?在普通的Python中,您的GIL一直存在,并且要(多个)内核使用多个内核,您需要使用多个进程,Stackless也是这样吗?
最佳答案
无堆栈python不会利用其运行的任何类型的多核环境。
这是关于Stackless的常见误解,因为它使程序员可以利用基于线程的编程。对于许多人来说,这两个是紧密联系在一起的,但实际上是两个不同的东西。
在内部,Stackless使用循环调度程序来调度每个tasklet(微线程),但是不能与另一个任务同时运行。这意味着,如果一个小任务很忙,则其他小任务必须等待,直到该小任务放弃控制。默认情况下,调度程序将不停止任务集,而将处理器时间分配给另一个任务集。 Tasklet的责任是使用Stackless.schedule()或完成其计算,将自己安排在计划队列的末尾。
因此,即使有多核可用,所有的tasklet也会以的顺序方式执行。
Stackless不提供多核支持的原因是因为这使线程变得更加容易。这就是无堆栈的全部内容:
from the official stackless website
这是link,它提供了有关多核和无堆栈的更多信息。
关于python - 无堆栈python和多核?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/377254/