gpt4 book ai didi

python pickler - 超出递归深度

转载 作者:太空狗 更新时间:2023-10-29 23:59:42 26 4
gpt4 key购买 nike

我正在尝试 pickle 元胞自动机类的实例,但出现此错误:

RuntimeError: maximum recursion depth exceeded while calling a Python object

我的元胞自动机由一列元胞(和一堆其他东西)组成,其中每个元胞都有指向其邻居的指针。在这个特定的 CA 中,有 256 个单元格。现在,我知道 pickler 应该能够识别已经 pickle 过的对象。

From docs:
*The pickle module keeps track of the objects it has already serialized, so that later references to the same object won’t be serialized again.

所以我真的不知道,为什么我超过了最大递归深度。

我认为 pickler 可能会进行深度优先 pickling,因此它首先遵循指针,超出递归堆栈,然后引发异常。我知道我可以使用 sys.setrecursionlimit() 扩展最大递归深度,但我认为这不是一个好的或可扩展的解决方案。

第一个问题:pickler深度优先 pickle 吗?
第二个问题:知道如何防止这种异常吗?

最佳答案

因此,正如@ExP 所说,pickler 进行深度优先 pickle ,这会导致递归超出异常。无论如何,我在这里找到了这个问题的解决方案 bugs.python.org .这意味着对于 python 3.1 pickler 甚至可以处理递归数据,例如图形。

还有一些不太优雅的解决方案需要更多时间来 pickle 一些递归数据,但它很简单(只是几行代码的问题)。友情链接 here .

看来,是时候开始慢慢转向 python3 了。希望有人觉得这个答案有用。

关于python pickler - 超出递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992209/

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