我開始使用GTK +編寫一個Python應用程序小工具。最近我決定做一些內存優化,並注意到我創建的大部分PyGTK對象從來都不會被垃圾收集器釋放。即使我打開一個窗口並在之後妥善銷燬,這個數字也會持續增長。Python和GTK +:如何創建垃圾回收器友好對象?
有人能指出我如何從Python創建和處理GTK +對象的正確方向。我沒有使用Glade或類似的東西。
而且我注意到,像這樣創建窗口:
class SomeWindow:
def __init__(self):
self.window = gtk.Window(type=gtk.WINDOW_TOPLEVEL)
相反的:
class SomeWindow(gtk.Window):
def __init__(self):
super(SomeWindow, self).__init__(type=gtk.WINDOW_TOPLEVEL)
給出2+對象選區候選人名單少。
你可以給我的任何建議嗎?
除非它是一個嚴重的錯誤,它們*將*被收集 - 遲早。循環引用使實例回收變得不可能(或至少不切實際),導致你看到的效果,但它們在GUI工具包中幾乎是不可避免的。 – delnan
@delnan謝謝你的回答,當GTK + for python是基於GI的時候,這種改變會發生嗎? – MeanEYE
「GC列表」是什麼意思?你的意思是你用gc.collect()得到的數字;打印len(gc.garbage())正在增加? – maxy