使用 C 使 Python 速度提高 150 倍

将性能关键型代码卸载到 C 而不放弃 Python 的实用指南。使用 C 将 Python 速度提高 150 倍一文首先出现在 Towards Data Science 上。

来源:走向数据科学

,迟早,您的代码执行速度会遇到障碍。如果您曾经用 Python 编写过计算量大的算法,例如字符串距离、矩阵数学或加密哈希,您就会明白我的意思。

当然,有时像 NumPy 这样的外部库可以帮助您,但是当算法本质上是顺序的时会发生什么?当我想对一种特定算法进行基准测试时,这正是我的问题,该算法确定将一个字符串转换为另一个字符串所需的编辑次数。

本质上是连续的

我尝试过Python。我尝试过 NumPy。然后我转向 C,这是我几十年前在大学第一次学的语言,但大约 15 年没有在愤怒中使用过。这就是事情变得有趣的地方。

我首先必须回答这个问题:“你能从 Python 调用 C 吗?”。经过一番研究后,很快就发现答案确实是肯定的。事实上,事实证明您可以通过多种方式来做到这一点,在本文中,我将介绍三种最常见的方法。

从最简单到最复杂,我们将讨论使用,

    subprocessctypesPython C 扩展
  • 子流程
  • ctypes
  • Python C 扩展
  • 我们将测试的算法称为编辑距离 (LD) 算法。两个单词之间的编辑距离是将一个单词更改为另一个单词所需的最小单字符编辑(插入、删除或替换)次数。它以苏联数学家 Vladimir Levenshtein 的名字命名,他于 1965 年定义了该度量。它在各种工具中都有应用,例如拼写检查器和光学字符识别系统。

    编辑距离 (LD)

    为了让您更清楚地了解我们正在讨论的内容,这里有几个示例。

    计算单词“book”和“black”之间的LD。

      book → baok(用“a”代替“o”),baok → back(用“c”代替“o”)back → black(添加字母“l”)
  • book → baok(用“a”替换“o”),
  • baok → 返回(用“c”替换“o”)
  • .so cl