无堆栈python和多核?
因此,我正在玩Stackless
Python,脑海中浮现出一个问题,也许这是“假定的”或“常见的”知识,但我找不到它实际上写在无堆栈的网站上的任何地方。
Stackless
Python是否可以利用多核CPU?在普通的Python中,您的GIL一直存在,并且要(多个)内核使用多个进程,您需要使用多个进程,这对于Stackless也是如此吗?
-
Stackless的Python做 不 使用任何类型的多核环境下的运行上。
这是关于Stackless的常见误解,因为它使程序员可以利用基于线程的编程。对于许多人来说,这两个是紧密相连的,但实际上是两个不同的东西。内部无堆栈使用一个循环调度程序对每任务蕾(微线程),但没有微进程可以同时运行与另外一个。这意味着,如果一个小任务很忙,则其他小任务必须等待,直到该小任务放弃控制。默认情况下,调度程序将不停止任务集,并给处理器时间给另一个任务集。Tasklet的责任是使用Stackless.schedule()或完成其计算,将自己安排在计划队列的末尾。
因此 ,即使多核可用,所有tasklet也会 以顺序方式执行 。
Stackless不提供多核支持的原因是因为这使线程变得更加容易。这就是无堆栈的全部内容:
Stackless
Python是Python编程语言的增强版本。它使程序员可以利用基于线程的编程的好处,而不会遇到与常规线程相关的性能和复杂性问题。Stackless添加到Python的微线程既便宜又轻巧,如果使用得当,可以带来以下好处:- 改进程序结构。
- 更具可读性的代码。
- 提高程序员的生产力。
这里是一些有关多核和无栈的更多信息的链接。