При возврате PyBuildValue("iiii", i1, i2, i3, i4)
в Python созданный кортеж из 4-х целых чисел будет собираться нормально, когда с ним будет сделано (например, del
установлено или установлено на None
).
Но если я верну какие-либо типы контейнеров, например: Py_BuildValue("((ii),(ii))", i1, i2, i3, i4)
, то (по крайней мере) две поднаборы по 2 целых числа будут никогда не подвергаться сборке мусора.
Моя реальная ситуация намного сложнее ... и также не обязательно зависит от использования Py_BuildValue
.
Мне нужно вернуть сложный объект Python, созданный в C, в код Python и убедиться, что этот объект доступен для сборки мусора.
Кто-нибудь с идеей / комментарием или даже решением по этому поводу?