将PyBuildValue("iiii", i1, i2, i3, i4)
返回到Python时,创建的包含4个整数的元组将在完成后被垃圾回收(例如,del
被设置为None
或)。
但是,如果我返回任何容器类型,例如:Py_BuildValue("((ii),(ii))", i1, i2, i3, i4)
,那么(至少)每个具有2个整数的两个子元组将从不被垃圾收集。
我的实际情况要复杂得多……也不一定取决于使用Py_BuildValue
。
我需要将用C创建的复杂Python对象返回给Python代码,并确保该对象可用于垃圾回收。
有人对此有想法/评论甚至解决方案吗?