我有一个解析〜1GB文本数据的应用程序,因此在我的主工作循环中,我会定期执行以下操作以使GUI保持最新:
while gtk.events_pending(): gtk.main_iteration()
这很有效,数据处理快速退出。问题是当我添加TextView进行调试时。我一次只添加少量标记数据,但数量很多,这显然会产生大量未决事件并导致程序速度降低约100倍。
我想要一种方法来控制TextView何时发送挂起事件(例如,更新每100次插入而不是每次插入),因此gtk.main_iteration
实际上正在处理其余GUI的事件。这样的事情可能吗?
答案 0 :(得分:0)
您可以尝试使用这样的python生成器:
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()