我使用 pickle 和 dill 来跟随 lambda 函数并且工作正常:
import dill
import pickle
f = lambda x,y: x+y
s = pickle.dumps(f)
甚至在课堂上使用时,例如:
文件
foo.py
class Foo(object):
def __init__(self):
self.f = lambda x, y: x+y
文件
测试.py
import dill
import pickle
from foo import Foo
f = Foo()
s = pickle.dumps(f) # or s = dill.dumps(f)
但是当使用 cython 构建格式为 .pyx (foo.pyx) 的相同文件时,无法使用 dill、pickle 或 cpickle 进行序列化,出现此错误:
不能腌制。在 0x7f9ab1ff07d0>:找不到 foo.lambda
用于构建 cython 的 setup.py 文件
安装程序.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("foo.pyx"))
然后在终端中运行:
python setup.py build_ext --inplace
有办法吗?