0

我有一个解析约 1GB 文本数据的应用程序,因此在我的主工作循环中,我会定期执行以下操作以使 GUI 保持最新:

while gtk.events_pending(): gtk.main_iteration()

这很好用,数据得到处理很快就退出了。问题是当我添加一个 TextView 进行调试时。我一次只添加少量的标记数据,但添加了大量的标记数据,这显然会产生大量未决事件并导致程序运行速度慢 100 倍。

我想要一种方法来控制 TextView 何时发送挂起的事件(例如,每 100 次插入而不是每次插入更新一次),因此gtk.main_iteration真正为 GUI 的其余部分处理事件。这样的事情可能吗?

4

1 回答 1

0

You can try using python generators like this:

def add_data(file, limit=1000):
    with open(file, "r") as textfile:
        for line_num, line in enumerate(textfile):
            text_buffer.insert_at_cursor(line)
            if line_num >= limit and line_num % limit == 0:
                textview.show()
                yield True
    yield False

def load_data(logfile):
    loader = add_data(logfile)
    load = True
    while load:
        load = loader.next()
        while gtk.events_pending(): gtk.main_iteration()
于 2013-10-03T06:28:50.753 回答