gpt4 book ai didi

python - 无堆栈python和多核?

转载 作者:IT老高 更新时间:2023-10-28 20:20:58 25 4
gpt4 key购买 nike

所以,我在玩弄 Stackless Python一个问题突然出现在我的脑海中,也许这是“假设的”或“常见的”知识,但我在 stackless site 上的任何地方都找不到它。 .

是否 Stackless Python利用多核 CPU?在普通的 Python 中,GIL 一直存在,并且要(真正)使用多个内核,您需要使用多个进程,这对于 Stackless 是否正确?还有吗?

最佳答案

Stackless python 确实利用它运行的任何类型的多核环境。
这是对 Stackless 的常见误解,因为它允许程序员利用基于线程的编程。对于许多人来说,这两者紧密相连,但实际上是两个不同的东西。

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

因此,所有小任务都以顺序方式执行,即使在多核可用时也是如此。

Stackless 不支持多核的原因是因为这使线程变得更加容易。这正是 stackless 的意义所在:

from the official stackless website

Stackless Python is an enhanced version of the Python programming language. It allows programmers to reap the benefits of thread-based programming without the performance and complexity problems associated with conventional threads. The microthreads that Stackless adds to Python are a cheap and lightweight convenience which can if used properly, give the following benefits:

  • Improved program structure.
  • More readable code.
  • Increased programmer productivity.

这里是 link有关多核和无堆栈的更多信息。

关于python - 无堆栈python和多核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com