假设我有class A(<class ...>): pass
。我应该明确地调用del
进行深度删除吗?让我更具体一点:在fork与当前线程合并之前会发生什么?当一个线程与另一个线程交织时,它是否会捶打或使用指针?
修改
答案 0 :(得分:4)
del
关键字实际上并未明确删除对象。它减少引用计数,然后垃圾收集器清除内存,如果没有其他东西使用它。当你有一段长时间运行的代码,以及一个占用你不再需要的大量内存的变量时,这很有用。
退出函数范围后,所有变量的引用计数都会减少(如果合适,则清除)。对del
的显式调用没有任何深或特殊内容。
哦我还应该提一下del
命令从本地范围中删除变量名。所以从你的观点来看,变量已经消失了。但是,如果其他东西引用了指向的对象,则内存本身将不会被清除(<)。
修改强>
福克斯不合并。您可以在叉子上wait
退出,但就是这样。当你join
另一个线程时,它们也没有被合并。它们有不同的堆栈(但是堆相同)。当一个线程结束时,该线程范围内的所有变量都会减少其引用计数(并在适当时清除)。我不明白你关于颠簸和指针的问题 - 我不知道什么是颠簸,而python没有指针。