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