pybind11

fasttext是一个基于c++编写的python拓展程序,使用了pybind11,pybind11是一个轻量级的“Header-only”的库,因此不需要链接(依赖)任何库,也没不需要任何的转换步骤。它将C++的类型暴露给Python,反之亦然。主要用于将已经存在的C++代码绑定到Python。

一个简单的示例:

example.cpp 
#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。

fasttext框架大量利用了上述实现方式,在此做一个简单的示例。

posted @ 2021-02-24 20:52  小小马进阶笔记  阅读(771)  评论(0编辑  收藏  举报