fasttext是一个基于c++编写的python拓展程序,使用了pybind11,pybind11是一个轻量级的“Header-only”的库,因此不需要链接(依赖)任何库,也没不需要任何的转换步骤。它将C++的类型暴露给Python,反之亦然。主要用于将已经存在的C++代码绑定到Python。
一个简单的示例:
#include <pybind11/pybind11.h> namespace py = pybind11; int add(int i, int j) { return i + j; } PYBIND11_MODULE(example, m) { m.doc() = "pybind11 example plugin"; // 可选的模块说明 m.def("add", &add, "A function which adds two numbers"); }
PYBIND11_MODULE()宏函数将会创建一个函数,在由Python发起import语句时该函数将会被调用。模块名字“example”,由宏的第一个参数指定(千万不能出现引号)。第二个参数"m",定义了一个py::module的变量。函数py::module::def()生成绑定代码,将add()函数暴露给Python。
PYBIND11_MODULE()
import
py::module
py::module::def()
add()
fasttext框架大量利用了上述实现方式,在此做一个简单的示例。