gpt4 book ai didi

python-polars - 如何在不同运行时之间共享惰性数据帧?

转载 作者:行者123 更新时间:2023-12-05 03:26:54 25 4
gpt4 key购买 nike

我有一个桌面应用程序,其中大部分计算 (>90%) 发生在它的 Rust 端。但我希望用户能够用 Python 编写脚本来对 df 进行操作。

这可以在不将运行时之间的数据帧序列化为文件的情况下完成吗?

一个简单的调用可能是这样的:

Rust: agg -> Rust: calculate new column -> Python: groupby -> Rust: count results

序列化方法适用于小型数据集。它并没有真正扩展到更大的。最佳解决方案是能够以某种方式告诉 python 端:这是内存中的惰性数据帧。你可以操纵它

我已阅读文档,我能看到的唯一解决方案是使用 Apache IPC。

最佳答案

Lazyframes(大部分)可序列化为 json。序列化操作是容易出错的,因此根据查询的类型,它可能不会序列化。不过,对于此操作,所有语言的 API 都略有不同。

这会序列化 LogicalPlan 本身,并且不会对数据帧执行任何计算。这使得操作成本非常低。

python

lf = get_lf_somehow()
json_buf = lf.write_json(to_string=True)
lf = pl.LazyFrame.from_json(json)

节点.js

let lf = get_lf_somehow()
const json_buf = lf.serialize('json')
lf = pl.LazyFrame.deserialize(buf , 'json')

生锈

let lf = get_lf_somehow();
let json_buf = serde_json::to_vec(&lf)?;
let lf = serde_json::from_slice(&json_buf)?;

关于python-polars - 如何在不同运行时之间共享惰性数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71590513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com