【问题标题】:Dill dump_session: Making Jupyter-session pickle-able againDill dump_session:再次使 Jupyter-session pickle-able
【发布时间】:2021-07-09 16:45:22
【问题描述】:

我喜欢使用 dill.dump_session 来保存我的笔记本状态。 但是,我经常加载不可提取的对象(dask-clusters、keras 模型)。 有什么方法可以将它们从我的环境中删除,然后使用 dump_session()?

我试图用 dill.detect.errors 找到有问题的对象:

(使用 globals() 和 locals() )

problemDict={}
exceptions=["Out","get_ipython","exit","quit"]

for name, obj in globals().items():
    if name in exceptions or name[0]=="_"::
        continue
    if dill.detect.errors(obj) is not None:
        print(name)
        problemDict[name]=obj

我删除了两个有问题的对象(以及之后的摘要字典)

for name, obj in problemDict.items():
    print(name)
    del(globals()[name])

它们从我的命名空间中消失了,但我仍然收到同样的错误:

TypeError: cannot pickle 'tensorflow.python._tf_stack.StackSummary' 对象

keras 模型还能“隐藏”在某个地方吗?导入是否已经使会话变得不可拾取? 不幸的是, dill.dump_session 源代码并没有真正帮助我。 (https://github.com/uqfoundation/dill/blob/master/dill/_dill.py#L343)

编辑:“dill.detect.trace(False)”输出也没有帮助。不知道该怎么办:

...
# T4
2021-04-14 14:12:34,726 # T4
# D2
2021-04-14 14:12:34,727 # D2
# D2
2021-04-14 14:12:34,728 # D2
D2: <dict object at 0x7ffa9030a6c0>
2021-04-14 14:12:34,728 D2: <dict object at 0x7ffa9030a6c0>
D2: <dict object at 0x7ffa90305b80>
2021-04-14 14:12:34,736 D2: <dict object at 0x7ffa90305b80>
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
...

任何帮助表示赞赏!

【问题讨论】:

  • 我是dill 作者。非常好的问题。事实上,如果你从全局和局部中删除有问题的对象,它们仍然可以通过指针引用存在。您实际上需要删除对对象的所有引用才能使它们消失。这是我打算添加到dill 的内容,但还没有。 dill.pointers 中有一些用于参考跟踪的工具。 dill.detect.trace 的输出向您展示了 dill 所采用的路径,因为它递归地跟踪引用并序列化构建您感兴趣的对象所需的对象。
  • 感谢...指针 ;-)。似乎 Jupyter/Ipython 在“Out”/“_oh”中保留了一些变量和一些我还没有设法根除并在删除全局变量后不断弹出的临时变量(“_[Number]”)。下周会尝试更多。

标签: python global jupyter-lab dill


【解决方案1】:

虽然原来的笔记本长期关闭(无法解决),但我遇到了类似的问题。 同样,某些变量是不可选择的,并且似乎驻留在del 之后的某个 ipython 变量中。 手动删除“Out”/“_oh”-keys/items 没有帮助,但是

%reset out

使会话终于可以再次选择了!

上帝,我真的希望这是根本问题...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多