擅长:python、mysql、java
<p>Python无法pickle模块对象是真正的问题。有什么好理由吗?我不这么认为。模块对象不可访问导致了python作为并行/异步语言的脆弱性。如果要pickle模块对象,或者python中的几乎任何对象,那么使用<code>dill</code>。</p>
<pre><code>Python 3.2.5 (default, May 19 2013, 14:25:55)
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> import os
>>> dill.dumps(os)
b'\x80\x03cdill.dill\n_import_module\nq\x00X\x02\x00\x00\x00osq\x01\x85q\x02Rq\x03.'
>>>
>>>
>>> # and for parlor tricks...
>>> class Foo(object):
... x = 100
... def __call__(self, f):
... def bar(y):
... return f(self.x) + y
... return bar
...
>>> @Foo()
... def do_thing(x):
... return x
...
>>> do_thing(3)
103
>>> dill.loads(dill.dumps(do_thing))(3)
103
>>>
</code></pre>
<p>在这里获取<code>dill</code>:<a href="https://github.com/uqfoundation/dill" rel="noreferrer">https://github.com/uqfoundation/dill</a></p>