Cha*_*ame 10 c c++ python dll cython
我正在尝试使用Cython来编写我的项目.
我的计划是用C++编写.dll,然后通过Cython从Python调用它们.所以我可以拥有C++的高计算性能,同时保持Python开发的简单性.
随着我走得更远,我有点困惑.据我所知,Cython将python代码包装成C.由于C具有更好的计算性能,因此性能得到了提高.我对此是否正确?
如果我在上面,那么是否有必要在C++中编写.dll并从Python调用它以提高性能?
如果我编写python代码并将其包装到C中,然后从Python调用它,它是否比调用用C++编写的.dll更好?
首先,我要澄清一下大家的一些误解。
不,不,不,不,不。这就像说“以设定速度驾驶汽车比让 F1 赛车手以相同速度驾驶汽车慢”一样有意义。这毫无意义。当Python加载你的库时,它会像内核加载和处理它一样加载和处理它(事实上,内核在Python的情况下也是这样做的)。事实上,这种“双重加载”(这不是动态库的原始设计)会减慢您的库的速度。我要强调的是,这是一个微小的差异,普通程序员不应该担心。
事实并非如此。它将Python代码编译成C语言,然后编译成动态库供Python稍后加载。这可能会在一定程度上优化您的 Python 代码,并让您能够利用 Python 的魔力与原子 C 数据类型进行交互。虽然这很酷,但它并没有给你的代码带来任何“神奇”的能力。
我还想补充一点,一些测试已经证明 Java(击鼓)实际上比 C、C++、Python 和其他语言更快,因为 JVM 非常优化。这并不意味着您应该使用 Java(因为它还有其他问题),但它应该提供视角。