gtk.treeview
独自のリストストアを管理するカスタムラッパー クラスがあります。このクラスには、リストストアのデータをクリアして新しいデータで上書きする独自のメソッドがあります。メモリ消費をテストする目的で、ツリービューには 50,000 行の整数が 8 列で表示されます。
リストストアをデータで更新する関数を呼び出すたびに、アプリケーションが使用するメモリが増加するように見え、データがクリアされた後は決して元に戻らないことに気付きました。
これが私の単純なツリービューの実装です:
class TreeViewPrototype(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
self.columns = [str, str, str, str, str, str, str, str]
# Initialize Treeview and TreeViewColumns here
# Setup columns
self.liststore = gtk.ListStore(*self.columns)
self.set_model(self.liststore)
def set_list_model(self):
self.liststore.clear()
self.liststore = gtk.ListStore(*self.columns)
# Populate liststore with dummy data
for i in range(50000):
row = []
for j in range(len(self.columns)):
row.append("%d[%d]"%(i,j))
self.liststore.append(row)
set_list_model を呼び出すたびに、リストストアを新しいもので上書きすると、データのメモリの割り当てが解除されることはないように思えます。私は何を間違っていますか?