上午听人讨论python调c++的问题,第一反应是caffe怎么实现的,晚上回家看了一眼。
其实只要找到具体实现的文件位置就好了,在python/caffe/_caffe.cpp里,第42行有个不怎么显眼的定义:
namespace bp = boost::python;
所以caffe是利用boost扩展库实现的python调用
顺便,不完全调研了下python调c++方法:
ctypes - 平台兼容性差,参考[2]
cython - 性能下降20%,参考[1]
swig - 性能下降70%,参考[1]
boost:python
参考[1]和[2],cython和swig会不同程度的导致c++性能下降,ctypes平台兼容性差,反正我都没实现过,道听途说。
另外,这里有比较简明的cython和swig代码示例。
原文:https://www.cnblogs.com/zhengmeisong/p/11415843.html