Python и GTK +: Как создать дружественные для сборщика мусора объекты? - PullRequest
1 голос
/ 29 июля 2011

Я начал писать небольшое приложение на Python с GTK + в качестве набора инструментов для виджетов.Недавно я решил провести некоторую оптимизацию памяти и заметил, что большинство создаваемых мной объектов PyGTK никогда не освобождается сборщиком мусора.Это число продолжает расти, даже если я открою окно и впоследствии правильно его уничтожу.

Может ли кто-нибудь указать мне правильное направление создания и обработки объектов GTK + из Python.Я не использую 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+ объекта меньше в списке GC.

Какие советы вы можете дать мне?

1 Ответ

0 голосов
/ 29 июля 2011

Вы вызывали .destroy ()?

В соответствии с документом gtk.Widget.destroy GTK поддерживает список окон верхнего уровня, которые сохранят ссылку.

И если вы используете какие-либо деструкторы Python, они также могут препятствовать освобождению циклических ссылок.

...