对python对象的扩展pickling支持

cloudpickle的Python项目详细描述


云泡菜

Build Statuscodecov.io

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生态系统之外的受众,并使其更易于改进 更值得注意的是,借助于专用的非回归测试套件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Hibernate中使用条件连接两个表?   Stripes框架中的java对话范围   我的内存够吗?   Jenkins Java&Selenium如何处理2个随机异常?   javascript Java websockets跨端点共享会话   java是一种测试驱动的开发方法吗?   Java客户端中的Soap连接超时,但在SOAPUI中未超时   Java LibGDX:TileMap未在顶部和右侧渲染   linux Java::process builder:bash脚本:返回的文件名正确,但fileReader引发FileNotFoundException   java Selenium单击自动随机生成的DIV/ID/LINK   比较两个忽略元素和属性顺序的XMl文件   Java无限循环/调用   java如何防止操作修改cookie?   列出未保存的Java webpanel命令   在Java中,如何解决XXXX不能作为变量求解的错误?   Java概念后期版本格式化部分