本文是继上文而来:
【整理】从stack overflow的一个问题引发的思考(C++封装为Python可用接口)
最近开发中有个需求需要把一套C++的API封装为Python可用的库,所以,就开始了C++封装Python的方法探索。
最早我是通过SWIG进行封装的,无奈失败告终,耗费了2个礼拜的时间折腾踩坑,发现SWIG对C++封装Python代码中,对于线程的控制非常差劲,对GIL的获取,SWIG官方并没有提供很好的解决办法,遂SWIG方案卒。
再后来就发现了C++封装Python,其实可以通过官方的Python C API进行封装,然后编译出 DLL/pyd 文件即可供Python调用,但是此法略有难度,需要对很多细节进行控制,代码量也很大。
不过相比较Python C API,那么Cython就简单许多,而且Cython对 Python 的GIL有专门的控制,非常适合对C/C++的线程类进行封装。那么,在查看了官方文档的介绍之后,最后综合考虑就采取了Cython的方案。
当然还有优秀的Boost.Python封装,无奈Boost可能复杂程度更高,遂放弃。
那么根据Cython的官方文档学习,我把官方的Cython文档用户指南采用Google 翻译API进行翻译,加入个人的部分修改,适合英文基础差的学习Cython入门参考。
下面是Cython用户指南相关的文章:
【翻译】Cython教程7_Cython加速之早期绑定机制(early binding)
=========================================
对于还需要作参考的文章,我也整理如下:
Cython基础--C结构体,枚举,以及常量在Cython中的定义和使用
Cython进阶--用Cython封装Callback函数(续)
额外推荐一本PDF教程《Cython A Guide for Python Programmers》下载:
OReilly.Cython A Guide for Python Programmers
文章的脚注信息由WordPress的wp-posturl插件自动生成