Python和GTK +:如何创建垃圾收集器友好对象?

时间:2011-07-28 22:34:18

标签: python garbage-collection gtk pygtk

我开始用Python编写一个小应用程序,用GTK +作为我的widget工具包。最近我决定做一些内存优化,并注意到我创建的大多数PyGTK对象永远不会被垃圾收集器释放。即使我打开一扇窗户并在之后正确销毁它,这个数字也会不断增长。

有人能指出我如何从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)

在GC列表中减少2个以上的对象。

你可以给我任何建议吗?

1 个答案:

答案 0 :(得分:0)

你有没有打电话给.destroy()?

根据gtk.Widget.destroy文件,GTK维护了一个顶级窗口列表,可以保持引用活动。

如果你使用任何Python析构函数,它们也可以防止循环引用被释放。