对python对象的扩展pickling支持
cloudpickle的Python项目详细描述
云泡菜
cloudpickle
使序列化不支持的python结构成为可能
默认情况下,来自python标准库的pickle
模块。
cloudpickle
对于集群计算尤其有用,其中python
代码通过网络传送到远程主机上执行,可能会关闭
对数据。
除其他外,cloudpickle
支持对lambda函数进行酸洗
以及中交互定义的函数和类
__main__
模块(例如在脚本、shell或jupyter笔记本中)。
cloudpickle
默认使用pickle.HIGHEST_PROTOCOL
:它意味着
在运行同一版本python的进程之间发送对象。
不支持对^{str 1}使用cloudpickle
$长期对象存储,并且
不鼓励。
安装
最新版本的cloudpickle
可从
pypi:
pip install cloudpickle
示例
腌制lambda表达式:
>>>importcloudpickle>>>squared=lambdax:x**2>>>pickled_lambda=cloudpickle.dumps(squared)>>>importpickle>>>new_squared=pickle.loads(pickled_lambda)>>>new_squared(2)4
pickling在python shell会话中交互定义的函数
(在__main__
模块中):
>>>CONSTANT=42>>>defmy_function(data):...returndata+CONSTANT...>>>pickled_function=cloudpickle.dumps(my_function)>>>pickle.loads(pickled_function)(43)85
运行测试
使用
tox
,测试运行所有受支持版本的 Python和Python:pip install tox tox
或者针对特定环境:
tox -e py37
使用
py.test
只运行当前版本的 Python:pip install -r dev-requirements.txt PYTHONPATH='.:tests' py.test
历史记录
cloudpickle
最初由picloud.com开发,并作为
客户端sdk。
pyspark中包含了cloudpickle.py
的副本。
与Apache Spark的接口。刘戴维斯,乔希
Rosen、Thom Neale和其他ApacheSpark开发人员显著改进了它,
最值得注意的是增加了对pypy和python 3的支持。
cloudpickle
项目的目的是使这项工作在更广泛的范围内可用
Spark生态系统之外的受众,并使其更易于改进
更值得注意的是,借助于专用的非回归测试套件。