添加快捷方式
分享
pybind11落地实战——PyCGraph 是怎样练成的
输入“/”快速插入内容
pybind11落地实战——PyCGraph 是怎样练成的
飞书用户1170
5月15日修改
🏝️
•
CGraph链接:
https://github.com/ChunelFeng/CGraph
(包含PyCGraph)
•
【B站视频】:
https://www.bilibili.com/video/BV1ofLdz5EzX
◦
如果对您有帮助,请给文档和视频点赞。小纯给你比心了
•
pybind11链接:
https://github.com/pybind/pybind11
◦
中文说明文档:
https://geekdaxue.co/read/pybind11-CN/Introduction.md
◦
原理介绍:
https://zhuanlan.zhihu.com/p/654398848
◦
选型参考:
https://zhuanlan.zhihu.com/p/444805518
1.
背景
1.1
CGraph 是什么
•
纯cpp11开发的DAG调度框架
•
无三方依赖的开源项目
•
支持 构图、子图、判断、超时、暂停/恢复 等功能
33%
•
跨平台的基于流图的计算框架
•
支持 windows,linux,mac,android 系统
33%
•
收录于 awesome-cpp 等知名期刊和榜单
•
被广泛用于AI,智驾,机器人,平台开发,金融 等众多领域
33%
50%
50%
1.2
PyCGraph 的原因
•
CGraph 自身功能趋于稳定,
方向感
逐渐弱化
•
Python自身对
多线程
支持较弱。而隐式多线程编程正好是 CGraph 的特点
•
Python
生态
丰富,支持 python 可以更好的扩展CGraph生态,并且复用 python 的生态
•
让用户可以在 cpp 和 python 之间
无缝
切换
50%
1.3
PyCGraph 的挑战
•
各种
原生 or 自定义类型
数据的适配
•
各种
继承类、虚函数关系
调用的适配
•
函数权限
的问题,protected,private 等
•
模板
相关适配
•
多线程
相关适配
•
跨语言
生命周期管控
50%
1.4
Why pybind11
优势
劣势
ctypes
•
简单易上手,python 中原生支持的方法
•
效率高*
•
依赖 dll 和 so 等动态链接库
•
仅支持简单c语言类型,int, float, void* 之类