对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 AudioEffect不支持双簧管?   增加内存后出现java IntelliJ堆大小错误   在unix/linux中工作的java中将unicode字符串转换为ASCII   java是否缺少正确对齐输出的值?   java Spring 3 MVC:动态表单中的onetomany(创建/更新时添加/删除)   java在接口中创建两个通用参数   lambda使用Java 8从嵌套列表中使用forEach查找项的替代方法是什么?   Java正则表达式匹配10位电话号码,中间有空格   linux将log4j外部化。使用命令行Java的属性文件   带有SSL的java简单RMI服务器   java无法为事务[…]打开JPA EntityManager无法获取驱动程序类“null”和URL“null”的连接   Android设备上的java Oauth Foursquare   for循环的ImageButton名称的java骰子模拟浓缩   java有没有简单的1d条形码阅读器?   如何在调用resultset后解决“无效字符串或缓冲区长度”。从java到访问mdb的getString()连接   在Java8中,是否可以使用JVM参数来控制何时(或在什么条件下)卸载类?