Phi*_*hil 7 c python python-module cython python-extensions
我想创建一个Python扩展,我真的很喜欢使用Cython.主要是为了获得更多关于它的知识,并利用速度增益,如果有的话.我已经阅读了相当多的Cython文档,但我还不是计算机科学家(还),并且没有深入的知识来理解低级基础知识,因此我提出以下问题的原因:
我只是想知道,如果我在我正在开发的Python扩展中使用外部导入(例如,ORM或SQL库或任何其他第三方库)会发生什么?
Cython如何处理它?
如果这个导入的库/扩展名是纯Python还是编译它会有区别吗?
处理这个问题的正确方法是什么?
谢谢.
PS.问题以粗体显示.
cython的目标是与python兼容,即你可以对任何python代码进行cython化,它将像以前一样工作.目前,很大一部分python代码已经可以运行了.Cython还允许您优化部分代码并将其编译为更高效的C代码.
这就是说任何python导入都将保持默认状态.对它们的任何调用都将作为python命令发出.即使模块是用C语言编写的,cython也会通过python绕道来调用模块的功能.如果要直接使用C库,则必须为它们安装cython.在用Cython文档解释了如何做到这一点.
通常,python充当监督者并处理模块/类的范围.如果一个模块中的代码调用任何python函数(或访问python变量),python将根据调用者的范围解析调用.如果被调用的函数碰巧在第二个模块中,python很乐意使用它.调用者只会获得结果,并不应该真正关心其他函数是否在不同的模块中.因此关键是python的作用域规则决定调用哪个函数.