Python 从Cython公开类似文件的对象
我需要公开一个C库中类似文件的对象,我正在用Cython模块包装它。我想在缓冲、readline()等方面重用python的通用io代码 新的IO模块似乎正是我所需要的,但实际上从Cython使用它似乎并不简单,我尝试了几种方法:Python 从Cython公开类似文件的对象,python,file-io,cython,Python,File Io,Cython,我需要公开一个C库中类似文件的对象,我正在用Cython模块包装它。我想在缓冲、readline()等方面重用python的通用io代码 新的IO模块似乎正是我所需要的,但实际上从Cython使用它似乎并不简单,我尝试了几种方法: 我在从IO.RawIOBase继承的cdef类中的代码-这失败了,因为cdef类只能从其他cython cdef类继承,而IO是“原始”C cdef类中的我的代码,另一个继承我的cdef类和RawIOBase的(非cdef)类-失败,出现“TypeError:多个基
- 我在从IO.RawIOBase继承的cdef类中的代码-这失败了,因为cdef类只能从其他cython cdef类继承,而IO是“原始”C
- cdef类中的我的代码,另一个继承我的cdef类和RawIOBase的(非cdef)类-失败,出现“TypeError:多个基有实例布局冲突”
- 我的代码在一个继承自RawIOBase的(非cdef)类中——这是可行的,但我失去了在类中存储我的c级(我需要与底层库进行对话)内容的能力,因此我需要在它周围创建一个cdef包装器,并将其作为成员存储。。。这看起来一团糟
- 我在cdef类中的代码没有继承(原始)IOBase,而是重新实现了它的功能,Python代码将我的对象包装在BufferedReader/BufferedWriter中—这一个似乎可以工作,并且比前面的选项更简单
3) 在Python2.6中,IO是纯python的,这将如何工作?我想性能会受到影响,但它会起作用,对吗?对底层库返回的文件描述符编号调用
os.fdopen()
,然后向生成的文件对象发送普通Python方法调用以进行输入和输出,会不会太低效?对于大多数I/O,如果您能看到直接调用C例程还是让Python方法dispatch logic为您调用它的区别,我会感到惊讶——但是,当然,您可能处于一种不寻常的情况,我可能错了 对不起,我之前没有看到这个答案。这并不适用于我的情况,因为我从第三方库得到的不是操作系统级的FD。