问题域/PD-232

C++/Python 跨语言绑定

Cross-Language Binding

通过 pybind11 等工具实现 C++ 高性能核心与 Python 易用接口的桥接

子问题

1.对象生命周期管理

2.类型转换与零拷贝

3.异常跨语言传播

4.多数据类型(20+)的统一分发与 Schema 驱动转换

5.pickle 序列化支持多进程场景

6.Python 构造验证与 C++ _from_core 跳过验证的双路径设计

各项目的解法1 solutions

Signals

横向对比

维度zvec
绑定技术pybind11 PYBIND11_MODULE,6 个模块化 Initialize 注册器
类型转换Schema 驱动 switch-case 分发 20+ 类型,checked_cast 模板
包装模式双层架构:C++ _zvec 内部模块 + Python zvec 包装层
异常传播StatusCode→Python 原生异常映射(KeyError/ValueError/RuntimeError)
扩展机制Python Protocol + @runtime_checkable 定义嵌入函数接口
序列化支持py::pickle 支持 Collection/FieldSchema/Doc 的多进程序列化

最佳实践

1.Python 层用 Protocol 定义接口,C++ 层实现性能关键路径

2.模块化绑定注册:按子系统拆分 Initialize 方法避免单文件膨胀

3.checked_cast 模板提供字段级类型错误信息

4.unwrap_expected 模板统一处理 C++ expected 类型的错误解包