如何获得python函数';什么是腌制?

如何获得python函数';什么是腌制?,python,function,pickle,Python,Function,Pickle,作为对这一问题的后续行动: 确定方法依赖关系的好方法是什么?例如,与上面的文章类似,如果我有一个使用方法g和y的函数f,有没有一种简单的方法可以动态地获取对g和y的引用 此外,我想你会希望这个方法递归整个函数图,这样如果y依赖于z,你也可以捆绑z 我看到disco为此使用了以下模块: 关于如何解决这个问题还有其他建议吗?disco方法似乎是基于模块的,因此您可能需要打包更多的内容,而不是实际执行root方法。要做到这一点,我会使用,它可以序列化python中的几乎所有内容。Dill还可以帮助

作为对这一问题的后续行动:

确定方法依赖关系的好方法是什么?例如,与上面的文章类似,如果我有一个使用方法g和y的函数f,有没有一种简单的方法可以动态地获取对g和y的引用

此外,我想你会希望这个方法递归整个函数图,这样如果y依赖于z,你也可以捆绑z

我看到disco为此使用了以下模块:

关于如何解决这个问题还有其他建议吗?disco方法似乎是基于模块的,因此您可能需要打包更多的内容,而不是实际执行root方法。

要做到这一点,我会使用,它可以序列化python中的几乎所有内容。Dill还可以帮助您理解代码失败时是什么导致酸洗失败

>>> import dill
>>> dill.loads(dill.dumps(your_bad_object))
>>> ...
>>> # if you get a pickling error, use dill's tools to figure out a workaround
>>> dill.detect.badobjects(your_bad_object, depth=0)
>>> dill.detect.badobjects(your_bad_object, depth=1)
>>> ...
如果您完全愿意,您可以使用dill的
badobjects
(或其他检测函数之一)递归地潜入对象的引用链,并弹出不可点击的对象,而不是像上面那样在每个深度调用它

此外,这也是对测试套件的一个非常方便的补充

>>> # visualize the references in your bad objects
>>> objgraph.show_refs(your_bad_object, filename='your_bad_object.png')
或者,正如我在上面提到的文章中所述,您可以使用dill在一个命令中pickle整个python会话。这对于你的问题来说有点过分了,但它也会起作用。

要做到这一点,我会使用,它可以序列化python中的几乎任何内容。Dill还可以帮助您理解代码失败时是什么导致酸洗失败

>>> import dill
>>> dill.loads(dill.dumps(your_bad_object))
>>> ...
>>> # if you get a pickling error, use dill's tools to figure out a workaround
>>> dill.detect.badobjects(your_bad_object, depth=0)
>>> dill.detect.badobjects(your_bad_object, depth=1)
>>> ...
如果您完全愿意,您可以使用dill的
badobjects
(或其他检测函数之一)递归地潜入对象的引用链,并弹出不可点击的对象,而不是像上面那样在每个深度调用它

此外,这也是对测试套件的一个非常方便的补充

>>> # visualize the references in your bad objects
>>> objgraph.show_refs(your_bad_object, filename='your_bad_object.png')
或者,正如我在上面提到的文章中所述,您可以使用dill在一个命令中pickle整个python会话。这对你的问题来说有点过分了,但也行得通