【问题标题】:What does Cython do with imports?Cython 对进口有什么作用?
【发布时间】:2012-12-09 06:13:19
【问题描述】:

我想创建一个 Python 扩展,我真的很喜欢使用 Cython 的想法。主要是为了获得更多关于它的知识并利用速度增益(如果有的话)。我已经阅读了很多 Cython 文档,但我还不是计算机科学家,并且没有深入了解底层基础知识,因此我提出以下问题的原因:

我只是想知道,如果我在我正在开发的 Python 扩展中使用外部导入的(例如,ORM 或 SQL 库或任何其他第三方库)会发生什么?

Cython 是如何处理的?

这个导入的库/扩展是纯 Python 还是编译后的有区别吗?

处理这个问题的正确方法是什么?

谢谢。

PS。问题以粗体显示。

【问题讨论】:

    标签: python c cython python-module python-extensions


    【解决方案1】:

    cython 的目标是与 python 兼容,即你可以对任何 python 代码进行 cythonize 并且它将像以前一样工作。目前,大部分 python 代码已经可以工作了。 Cython 还允许您优化部分代码并将其编译为更高效的 C 代码。

    话虽如此,任何 python 导入都将保持默认状态。对它们的任何调用都将作为 python 命令发出。即使模块是用 C 编写的,cython 也会通过 python 绕道来调用模块的函数。如果要直接使用 C 库,则必须为它们提供 cython 绑定。 cython documentation explains how to do this。

    通常,python 充当监督者并处理模块/类的范围。如果一个模块中的代码调用任何 python 函数(或访问 python 变量),python 将根据调用者的范围解析调用。如果被调用的函数恰好在第二个模块中,python 很乐意使用它。调用者只会得到结果,而不应该真正关心其他函数是否在不同的模块中。因此,关键是决定调用哪个函数的 python 作用域规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多