1

如果 Python 和 C 一样快,那么后者会出现在 Python 应用程序/库中吗?

示例:如果 Python 和 C 一样快,PIL 会完全用 Python 编写吗?

4

4 回答 4

7

访问“旧版”C 库和操作系统工具。

于 2010-02-20T20:56:41.080 回答
5

虽然您当然可以使用ctypes来访问现有的 C 代码,但在足够复杂的情况下,您可能不一定想要:当您编写为 C 设计(并在其中实现)的接口时,不进行编译可能意味着小错误在调用者方面,这会简单地拒绝在 C 中正确编译,可能会导致整个应用程序崩溃。

因此,使用 C 代码(而不是ctypes)来重用良好的现有 C 代码可能很有意义(当然, Cython也很好,因为它确实会生成 C 代码,如果出现调用方错误,应该编译失败;-)。

当然,从头开始重新编码所有内容,而不是重用好的、现有的、可靠的和经过微调的代码,这两种方式都没有多大意义——有太多有趣的新问题需要克服,以至于花时间只是模仿现有的,对一个已经解决的问题的恰到好处的解决方案可能不会是最好的、最有成效的、最令人满意的消磨时间的方式;-)。

于 2010-02-20T21:08:20.040 回答
2

在 Python 中使用 C 模块是有意义的:

  • 表现
  • 不会移植到 Python(例如,由于性能原因)或使用特定于操作系统的函数的库
  • 脚本。例如,很多游戏使用 Python、Lua 等语言作为脚本语言。因此,它们将 C/C++ 函数暴露给 Python。

至于您的示例:是的,但是 Python 本质上比 C 慢。如果两者都同样快,那么使用 Python 是有意义的,因为 C 代码通常更容易受到攻击(缓冲区溢出等)。

于 2010-02-20T21:01:03.643 回答
0

访问硬件。

于 2010-02-20T21:50:14.180 回答