Nano Hash - криптовалюты, майнинг, программирование

PyGTK: остановить обновление TextView до тех пор, пока не будет запрошено вручную

У меня есть приложение, которое анализирует ~ 1 ГБ текстовых данных, поэтому в моем основном рабочем цикле я периодически делаю следующее, чтобы поддерживать графический интерфейс в актуальном состоянии:

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

Это прекрасно работает, и данные обрабатываются быстро. Проблема в том, что я добавляю TextView для отладки. Я добавляю только небольшое количество размеченных данных за раз, но тонны их, что, по-видимому, создает множество ожидающих событий и заставляет программу работать примерно в 100 раз медленнее.

Мне нужен способ контролировать, когда TextView отправляет ожидающие события (например, обновлять каждые 100 вставок вместо каждой вставки), поэтому gtk.main_iteration действительно отрабатывает события для остальной части графического интерфейса. Возможно ли что-то подобное?

07.06.2013


Ответы:


1

Вы можете попробовать использовать генераторы 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()
03.10.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..