擅长:python、mysql、java
<p>我找到了一个解决方案,尽管这个方案在我的案例中行不通。不知道为什么,但是我们做的不仅仅是这个小的演示代码,所以我切换到<code>multiprocessing</code>。在</p>
<p>必须显式调用<code>deletecommand</code>:</p>
<pre><code>import tkinter
import gc
class Foo:
def __init__(self):
self.tk = tkinter.Tcl()
self.tk.createcommand("someCommand", self.someCommand)
print("Foo intialized")
# self.tk.eval('rename someCommand ""')
def someCommand(self):
pass
def __del__(self):
print("DESTRUCTOR called!")
if __name__ == "__main__":
while 1:
f = Foo()
f.tk.tk.deletecommand("someCommand")
del f
gc.collect()
</code></pre>
<p>当心!将调用放入<code>__del__</code>将不起作用,因为由于内存泄漏,析构函数永远不会被调用:</p>
^{pr2}$