记录一点关于python的c++拓展的知识点
作者:互联网
python和c++那点事儿
这个博客我觉得写得挺好,从简单例子给我们展示了一般会用到的几种扩展方式,如torch.util.cpp_extension,.pyx,distutils.extension,还有pybind11,直接调用动态库等。
点这里看
学习一下的缘由
其实,我是在复现一篇基于faster rcnn的代码时遇到的问题,由于是基于torch0.3,所以使用了torch,util.cffi来扩展c++,但是这个却在后面的torch版本中被淘汰了,所以我就索性把这个拓展方式改成高版本的torch支持的方式了,顺便补一下这方面的知识,之前一直pull代码按傻瓜教程操作,不明觉厉。
主要改动就是在cffi中只需要给出c++操作或者层的c/cpp源码以及cuda源码,按照cffi.create_extension操作就行,再build一下。改成高版本后,需要在此c/cpp源码中增加pybind11的接口说明,然后最好将c改成cpp,也就是加入extern "C"说明。
另外pyx方式也挺简单,只需要利用cython写一个python和c的脚本引用所需要的c源码就可以,然后就可以利用distuitils包装再利用setuptools来编译就行。
标签:知识点,python,torch,cffi,c++,源码,cpp 来源: https://blog.csdn.net/m0_38043555/article/details/115659925