0

約 1 GB のテキスト データを解析するアプリケーションがあるため、メインのワーカー ループで定期的に次のことを実行して、GUI を最新の状態に保ちます。

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

これはうまく機能し、データはすぐに処理されます。問題は、デバッグ用に TextView を追加するときです。一度に追加するタグ付きデータは少量ですが、大量に追加すると、明らかに多くの保留中のイベントが作成され、プログラムの速度が約 100 倍遅くなります。

TextView が保留中のイベントを送信するタイミングを制御する方法が必要なので (たとえば、すべての挿入ではなく 100 回の挿入ごとに更新する) gtk.main_iteration、残りの GUI のイベントを実際に処理しています。このようなことは可能ですか?

4

1 に答える 1

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()
于 2013-10-03T06:28:50.753 に答える