이렇게하려면 dill을 사용하면 파이썬에서 거의 모든 것을 직렬화 할 수 있습니다.
>>> import dill
>>>
>>> def foo(a):
... def bar(x):
... return a*x
... return bar
...
>>> class baz(object):
... def __call__(self, a,x):
... return foo(a)(x)
...
>>> b = baz()
>>> b(3,2)
6
>>> c = baz.__call__
>>> c(b,3,2)
6
>>> g = dill.loads(dill.dumps(globals()))
>>> g
{'dill': <module 'dill' from '/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/site-packages/dill-0.2a.dev-py2.7.egg/dill/__init__.pyc'>, 'c': <unbound method baz.__call__>, 'b': <__main__.baz object at 0x4d61970>, 'g': {...}, '__builtins__': <module '__builtin__' (built-in)>, 'baz': <class '__main__.baz'>, '_version': '2', '__package__': None, '__name__': '__main__', 'foo': <function foo at 0x4d39d30>, '__doc__': None}
딜는 pickle
레지스트리에 유형, 그래서 당신이 pickle
를 사용하는 일부 블랙 박스 코드를 가지고 당신이 정말로 그것을 편집 할 수 있다면, 그럼 그냥 가져 딜이 마술 타사을 monkeypatching없이 작동 할 수 있습니다 등록 암호.
당신은 또한 통역자 세션 전체를 피클하고 싶습니다 ... 딜도 그렇게 할 수 있습니다.
>>> # continuing from above
>>> dill.dump_session('foobar.pkl')
>>>
>>> ^D
[email protected]>$ python
Python 2.7.5 (default, Sep 30 2013, 20:15:49)
[GCC 4.2.1 (Apple Inc. build 5566)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> dill.load_session('foobar.pkl')
>>> c(b,3,2)
6
딜은 또한 당신의 코드가 실패 할 경우 실패 할 당신의 산세 원인을 이해하고 돕는 some good tools 있습니다.
참조 : http://nbviewer.ipython.org/5241793 및 http://mail.scipy.org/pipermail/ipython-dev/2013-August/012207.html –