同时运行C代码并与Python交互
作者:互联网
因此,我当前的项目主要是使用Python,但我希望重写C中计算量最大的部分,以尝试提高性能.我可以通过从DLL文件加载的简单函数(但不是全部)来实现很多功能.我在Python中有一个多维数组,我想在C中执行操作(尤其是A *寻路),但是我不确定如何转换它们,并且每次不断地将数据一次发送到加载的函数中似乎真的很困难.效率低下(数组的前两个维数低至几百,并且函数将需要一次处理数十个(即使不是数百个)数组中的元素).
我的想法是在C语言中创建一个类,该类在安装时创建自己的数组副本(性能并不是问题),并具有在数组上执行并将数据返回到主Python程序的方法.但是,我不确定如何做到这一点,即使这是解决此类问题的正确方法,也无法确定.这似乎意味着C代码与主要的Python程序并行运行,而直觉告诉我这是一个坏主意.
除了如何在Python中通过cTypes加载简单函数外,我对C和Python的集成了解不多,所以我非常感谢这里的一些指导.请记住,我根本不熟悉C.我大部分的编程经验是使用Python.在这种情况下将两者融合在一起的最佳方法是什么?
解决方法:
首先,当您在Python中使用多维数组时,您实际上应该使用NumPy.当您让NumPy进行数字运算时,您的程序已经足够快了(使用数组算术而不是Python进行循环).
如果这还不够,请考虑使用Cython编写程序的某些部分.Cython还支持NumPy数组,并提供了使用类Python语法轻松编写C代码的方法.
如果确实必须是C,我强烈建议使用Boost.Python.桥接Python和C从未如此简单.另外,Boost.Python也附带NumPy支持(boost :: numeric :: array).
标签:a-star,multidimensional-array,dll,python,c-4 来源: https://codeday.me/bug/20191102/1992381.html