LINUX.ORG.RU

Python + Gtk3 = утечка памяти

 , liststore, ,


0

2
from gi.repository import Gtk

def gen_store():
    st = Gtk.ListStore(*[str for f in range(5)])
    for r in xrange(100000):
        st.append(['Aaaaaaa', 'Bbbbbbb', 'Ccccccc', 'Ddddddd', 'Eeeeeee'])
    return st

if __name__ == '__main__':
    for i in range(10):
        raw_input('Press <Enter> ...')
        store = gen_store()
        del(store)

С каждым вызовом gen_store() память захватывается и послеэтого не освобождается, хотя ссылок на старые объекты уже нет.

Где грабли?


import gc
from weakref import ref

from gi.repository import Gtk

def gen_store():
    st = Gtk.ListStore(*[str]*5)
    for r in xrange(10000):
        st.append(['Aaaaaaa', 'Bbbbbbb', 'Ccccccc', 'Ddddddd', 'Eeeeeee'])
    return st

def boo():
    for i in range(10):
        raw_input('Press <Enter> ...')
        store = ref(gen_store())
        gc.collect()
        print store()


if __name__ == '__main__':
    boo()

Да, Сталина на них нет.

baverman ★★★
()
Ответ на: комментарий от baverman

В pygtk всё норм, __del__ листстора подчищает содержимое. Можешь с чистой совестью репортить баг.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.