Python 新手,看了一下 API,对象转字符串需要分两步走,第一步 PyObject_Str 弄出来一个 PyObject,第二步才能从这个临时的 PyObject 拿到 char *的 C-string.
但这个中间的对象我又不敢递减计数,还得等这个 C-string 用完了。。
有点儿麻烦啊,大家平时都这么凭肉眼计数吗。
1
bigtan 2019-07-12 20:39:38 +08:00 1
不要自己直接用 Python 接口写,可以用类似 cython 的东西。
|
2
anonymous256 2019-07-12 22:09:59 +08:00 via Android
你的 C 模块要接受 Python 什么样的数据结构? list,dict 这种高级数据结构吗,还是说只是字符串这种简单的。
c 代码编译成动态库,然后让 python 调用? 或者把核心组件用 python 写,用 cython 编译成 pyd(win 系统)或.so(linux),给其它 python 程序使用。 |
3
HelloAmadeus 2019-07-12 22:14:22 +08:00 via iPhone
多看看官方文档,要区分 borrowed reference 和 new reference 的区别,按照 cpython 的源码规范来,引用计数管理比较简单的
|
4
ysc3839 2019-07-13 02:43:22 +08:00 via Android 1
如果可以使用 C++ 的话试试 pybind11 ?
|
5
lastright OP @anonymous256 也需要跟 list,dict 打交道。如果只跟 str 打交道的话,那直接一步 PyUnicode_UnicodeAsXX 就行了,对吧? 至于 C 和 python 谁调用谁,还得听上面的,我是个小兵。
|