Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试python对象是否有效_Python_C_Cython - Fatal编程技术网

测试python对象是否有效

测试python对象是否有效,python,c,cython,Python,C,Cython,我正在使用Cython包装Python的c库。 我在C代码中有指向可调用Python对象的指针,以便稍后从C代码中调用它们。 如果我只有地址,如何确保回调不会被垃圾收集或删除。只需增加你持有的对象-这确保它不会消失!一旦你完成了它,一定要记得去DECREFobj——而且,详细信息请参见- 只需增加你手中的物体,这可以确保它不会消失!一旦你完成了它,一定要记得去DECREFobj——而且,详细信息请参见- 我知道如何防止gc收集。我通常把它放在列表、Python或cython端,问题是如何测试给定

我正在使用Cython包装Python的c库。 我在C代码中有指向可调用Python对象的指针,以便稍后从C代码中调用它们。
如果我只有地址,如何确保回调不会被垃圾收集或删除。

只需增加你持有的对象-这确保它不会消失!一旦你完成了它,一定要记得去DECREFobj——而且,详细信息请参见-

只需增加你手中的物体,这可以确保它不会消失!一旦你完成了它,一定要记得去DECREFobj——而且,详细信息请参见-

我知道如何防止gc收集。我通常把它放在列表、Python或cython端,问题是如何测试给定地址的有效性。@AlexV.,答案是,不可能。如果您选择不保留该对象,它可能已被释放,因此该地址处的内存现在可能是垃圾—无法确保它是垃圾或其他完全无关对象的一部分。如果你在意的话,抓住这个对象——内存是可替换的,除了一个地址之外什么也没有,也永远不会!,有一种方法可以确定这是一个PyObj的地址,其他人好心地为我保留了这个地址,因为我不会被打扰-我知道如何防止gc收集。我通常把它放在列表、Python或cython端,问题是如何测试给定地址的有效性。@AlexV.,答案是,不可能。如果您选择不保留该对象,它可能已被释放,因此该地址处的内存现在可能是垃圾—无法确保它是垃圾或其他完全无关对象的一部分。如果你在意的话,抓住这个对象——内存是可替换的,除了一个地址之外什么也没有,也永远不会!,有一种方法可以确定这是一个PyObj的地址,其他人好心地为我保留了这个地址,因为我不会被打扰-