擅长:python、mysql、java
<p>PiCloud发布了一个开源(LGPL)pickler,它可以处理函数闭包和更多有用的东西。它可以独立于他们的云计算基础设施使用——这只是一个普通的泡菜。整个shebang都有文档记录<a href="http://docs.picloud.com/" rel="noreferrer">here</a>,您可以通过“pip install cloud”下载代码。不管怎样,它做你想做的。让我们通过酸洗来证明:</p>
<pre><code>import pickle
from StringIO import StringIO
import cloud
# generate a closure
def foo(bar, baz):
def closure(waldo):
return baz * waldo
return closure
closey = foo(3, 5)
# use the picloud pickler to pickle to a string
f = StringIO()
pickler = cloud.serialization.cloudpickle.CloudPickler(f)
pickler.dump(closey)
#rewind the virtual file and reload
f.seek(0)
closey2 = pickle.load(f)
</code></pre>
<p>现在我们有了<code>closey</code>,原始闭包,<code>closey2</code>,这是从字符串序列化中恢复的闭包。让我们测试一下</p>
^{pr2}$
<p>很漂亮。这个模块是纯python的,你可以打开它,很容易地看到是什么让魔法起作用。(答案是大量代码。)</p>