如何从 Python 调用 Rust

弥合易用性和原始性能之间差距的指南。如何从 Python 调用 Rust 帖子首先出现在 Towards Data Science 上。

来源:走向数据科学

,Python 足够快 — 尤其是当您依赖 NumPy、Polars 或其他用 C 等编译语言编写的经过精心调优的库时。但有时,您最终会遇到一个无法矢量化的热循环:也许您正在遍历字符串列表来清理它们,或者您正在解析每个字符都很重要的混乱文本。你分析它,确认罪魁祸首,然后你盯着一个占用你一半运行时间的 for 循环。这就是 Rust 闪耀的时刻。

Rust 为您提供可预测的性能、对内存的严格控制和无所畏惧的并发性,而无需手动内存管理的麻烦。如果您正在考虑 — 不是另一种需要学习的语言!,好消息是您不需要放弃 Python 来使用 Rust。你可以保留你的编排、你的笔记本、你的测试 ——并且只将微小、无聊的内部循环移至 Rust。这使得 Rust 的学习曲线保持在绝对最低限度。

在本文中,我将演示如何从 Python 调用 Rust 并比较运行纯 Python 和 Python/Rust 组合之间的性能差异。这不会是关于 Rust 编程的教程,因为我假设您至少知道它的基础知识。

何苦呢?

现在,你可能会想:如果我了解 Rust,为什么我还要费心将它与 Python 集成——只是用 Rust 编程,对吧?

嗯,首先,我想说的是,了解 Rust 并不会自动使其成为整个应用程序的最佳语言。对于许多系统,例如机器学习、人工智能、脚本和 Web 后端等,Python 已经是首选语言。

其次,大多数代码对性能并不关键。对于这些部分,您通常只需要 Rust 的一小部分就可以产生真正的影响,因此一点点 Rust 知识可以大有帮助。

最后,Python 的生态系统很难被取代。即使您很了解 Rust,Python 也可以让您立即访问以下工具:

  • 熊猫
  • NumPy
  • scikit-learn
  • Jupyter
  • 气流
  • FastAPI 工具
  • 大量的脚本和自动化库
  • Rust 和 Maturin

    将 Rust 代码构建到 Python 模块中

    发布到 PyPI