python - CFFI:只要缓冲区引用它,就保持 cdata 处于活动状态
问题描述
我已经通过 CFFI 包装了 C 库,并且我希望我的 Python 对象为底层 C 数据提供缓冲区接口。我有这样的事情:
class Series(object):
def __init__(self):
self._series = ffi.gc(new_series(), free_series)
self.rawdata = ffi.buffer(self._series.data, self._series.len)
问题是self.rawdata
它不能保持self._series
活力。如果我执行以下操作,则会出现段错误:
var = Series()
var = series.rawdata # Series object is garbage collected and free_series is called
print(bytes(var)) # at this point memory pointed by buffer is deallocated
我试图通过使用ffi.gc
to 返回的对象来解决这个问题ffi.buffer
,但遗憾的是返回的类型ffi.buffer
不被接受。
解决方案
推荐阅读
- django - 如何使用自定义 django 过滤器传递字符串参数?
- python - 在文件中打印行而不重置指针
- javascript - 检查字符串是否匹配
- jenkins - 控制台日志中的 Jenkins 声明性管道掩码参数密码
- typescript - 如何在多个函数参数中推断相同类型
- python - Seaborn线图高cpu;与 matplotlib 相比非常慢
- mysql - 在 INSERT 触发器中是否有绕过错误 #1442 的方法?
- node.js - 循环遍历节点 js 中的一组结果
- nlp - 使用 Ruta 在最多 10 个单词的窗口中将 2 个注释链接在一起
- adaboost - AdaBoost.MM 与 SAMME/SAMME.R 相比如何?