无堆栈python和多核?

发布于 2021-01-29 15:17:49

因此,我正在玩Stackless
Python
,脑海中浮现出一个问题,也许这是“假定的”或“常见的”知识,但我找不到它实际上写在无堆栈的网站上的任何地方。

Stackless
Python
是否可以利用多核CPU?在普通的Python中,您的GIL一直存在,并且要(多个)内核使用多个进程,您需要使用多个进程,这对于Stackless也是如此吗?

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    内部无堆栈使用一个循环调度程序对每任务蕾(微线程),但没有微进程可以同时运行与另外一个。这意味着,如果一个小任务很忙,则其他小任务必须等待,直到该小任务放弃控制。默认情况下,调度程序将不停止任务集,并给处理器时间给另一个任务集。Tasklet的责任是使用Stackless.schedule()或完成其计算,将自己安排在计划队列的末尾。

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

    Stackless不提供多核支持的原因是因为这使线程变得更加容易。这就是无堆栈的全部内容:

    从官方的无堆栈网站

    Stackless
    Python是Python编程语言的增强版本。它使程序员可以利用基于线程的编程的好处,而不会遇到与常规线程相关的性能和复杂性问题。Stackless添加到Python的微线程既便宜又轻巧,如果使用得当,可以带来以下好处:

    • 改进程序结构。
    • 更具可读性的代码。
    • 提高程序员的生产力。

    这里是一些有关多核和无栈的更多信息的链接



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看