返回介绍

序列化加速(非必须)

发布于 2024-06-23 17:58:49 字数 1695 浏览 0 评论 0 收藏 0

PARL默认使用 cloudpickle 库进行数据的序列化和反序列化【数据是以序列化后的字节流形式在xparl中进行传输】;如果Python环境有下载 pyarrow 库的话,则会使用 pyarrow 库进行序列化和反序列化(由于 pyarrow 兼容性不够好,PARL不会默认下载该库)。

不同数据场景下,pyarrowcloudpickle 的表现优劣不同,用户可以基于自己的使用场景选择是否要下载 pyarrow 库,一般而言,使用 python3.8+ 自带的序列化协议已经可以满足大部分场景的需求。

性能对比

这里提供了 pyarrowcloudpickle 在不同数据下的序列化和反序列化的平均耗时作为参考:

  • 测试数据一: data = [np.random.RandomState(0).randn(50, 50)] * 10

  • 测试数据二: data = [np.random.RandomState(0).randn(500, 500)] * 10

  • 测试数据三:data = [np.random.RandomState(0).randn(5000, 5000)] * 10

  • 测试数据四: data = np.random.RandomState(0).randn(5000, 50000)

> pyarrow版本:python2使用 pyarrow==0.16.0,python3中使用 pyarrow==2.0.0

https://www.wenjiangs.com/wp-content/uploads/2024/docimg5/dataset2.pnghttps://www.wenjiangs.com/wp-content/uploads/2024/docimg5/dataset4.png

对比结论

  • 在序列化/反序列化 超大Numpy矩阵 时,pyarrow 表现明显比 cloudpickle

  • 使用3.8+版本的Python也能提升序列化性能。(主要是python3.8+版本对pickle进行了升级,支持 protocol=5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文