pickle 是python的序列化包,但是默认pickle 不能进行lambda 的处理,cloudpickle 对于pickle 进行了一些扩展,可以更好的支持
集群节点之间的共享以及计算,同时apache spark 的pyspark 也集成了此功能,只是是自己fork的完整代码
参考使用
- dump.py
import cloudpickle,pickle
squaredv2 = lambda x: x ** 2
pickled_class_origin = cloudpickle.dumps(squaredv2)
new_squared = pickle.loads(pickled_class_origin)
print(new_squared(2))
- 效果
如果是默认的pickle dump 会提供错误的
说明
实际上不少python 项目都会集成cloudpickle 比如ray 也集成了
参考资料
https://github.com/cloudpipe/cloudpickle
https://docs.python.org/3/library/pickle.html
https://github.com/ray-project/ray/tree/master/python/ray/cloudpickle