【问题标题】:Size of evaluation stack in CPythonPython中评估堆栈的大小
【发布时间】:2020-05-04 16:54:33
【问题描述】:

我知道 CPython 有一个递归限制,在我的 Python 副本上是 3000。

有谁知道在进行算术评估时堆栈深度是否有限制?

CPython 是否对函数调用和评估堆栈使用相同的堆栈?

大多数其他语言都这样做,我认为 CPython 也是如此。由于 CPython 没有在堆栈上存储太多(我认为几乎所有东西都保存在堆上),我想评估堆栈不需要太大?我搜索了https://leanpub.com/insidethepythonvirtualmachine,但找不到任何东西。

【问题讨论】:

    标签: python memory-management stack


    【解决方案1】:

    我做了一些进一步的研究,似乎 CPython 中有多个评估(或值)堆栈。例如,当 CPython 调用一个函数时,会实例化一个 PyFrameObject,并在其中为该函数创建一个评估堆栈。这个堆栈的大小显然是在编译时估计的。总之,没有单一的评估堆栈,每个评估堆栈的大小都是在编译时估计的。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 2013-05-02
      • 1970-01-01
      • 2021-05-02
      • 2015-02-14
      • 2017-11-04
      • 1970-01-01
      • 2012-10-07
      • 2023-03-11
      相关资源
      最近更新 更多