集成 Rust 和 Python 以实现数据科学

Python 仍然处于数据科学的最前沿,迄今为止它仍然非常流行和有用。但另一方面又加强了基础。当性能、内存控制和可预测性变得重要时,它就变得必要。

来源:KDnuggets

简介

Python 成为数据科学的默认语言是有充分理由的。它拥有成熟的生态系统、较低的进入门槛以及可让您快速从想法转变为结果的库。NumPy、pandas、scikit-learn、PyTorch 和 Jupyter Notebook 形成了一个在探索、建模和交流方面无与伦比的工作流程。对于大多数数据科学家来说,Python 不仅仅是一个工具;更是一个工具。这是思考发生的环境。

但Python也有其自身的局限性。随着数据集的增长、管道变得更加复杂、性能预期不断提高,团队开始注意到摩擦。有些操作感觉比平时要慢,并且内存使用情况变得不可预测。在某种程度上,问题不再是“Python 能做到这一点吗?”变成“Python 应该做这一切吗?”

这就是 Rust 发挥作用的地方。不是作为 Python 的替代品,也不是作为突然需要数据科学家重写所有内容的语言,而是作为支撑层。 Rust 越来越多地在 Python 工具下使用,处理性能、内存安全和并发性最重要的工作负载部分。许多人已经从 Rust 中受益,但没有意识到,通过像 Polars 这样的库或通过隐藏在 Python 应用程序编程接口 (API) 后面的 Rust 支持的组件。

本文就是关于这个中间立场的。它并不认为 Rust 在数据科学方面比 Python 更好。它演示了两者如何协同工作,既能保持 Python 的生产力,又能解决其弱点。我们将研究 Python 的困境、Rust 如何适应现代数据堆栈,以及集成在实践中的实际情况。

确定 Python 在数据科学工作负载中的困境

当您的工作负载与这些原语不完全一致时就会出现问题。一旦在 Python 中循环,性能就会迅速下降。当应用于数千万或数亿条记录时,即使编写良好的代码也可能成为瓶颈。

Cargo.toml 文件