@ssclock

Как вставить паузу в исполнение питоновского скрипта?

Есть линуксовый плеер Rhythmbox и плагин для него - Remember the rhythm, который занимается тем, что записывает в dconf время проигрывания песни, и если плеер закрыли, позволяет с этого времени восстановить воспроизведение.

Проблема в том, что запись ведётся каждую секунду, если не больше, отчего dconf-service отжирает более двух процентов процессора. Почитав код, я не увидел там ключа, определяющего периодичность записи. Есть ли там такой ключ или возможно ли его туда добавить, хотя бы просто грубо внеся паузу в исполнение всего скрипта?

Текст скрипта: https://github.com/owais/remember-the-rhythm/blob/...
  • Вопрос задан
  • 554 просмотра
Решения вопроса 1
@alpy

Почитав код, я не увидел там ключа, определяющего периодичность записи. Есть ли там такой ключ или возможно ли его туда добавить, хотя бы просто грубо внеся паузу в исполнение всего скрипта?


def do_activate ...
    self.shell_player.connect('elapsed-changed', self.elapsed_changed)

Здесь плагин подписывается на сигнал об изменении позиции, что происходит каждую секунду. Соответственно вызов elapsed_changed тоже будет происходить каждую секунду. Простой sleep здесь скорее всего не поможет, т.к. плеер должен дергать функции по сигналам неблокирующим образом.

Я бы попробовал переделать elapsed_changed таким образом:
def elapsed_changed(self, player, entry, data=None):
    try:
        pb_time = self.shell_player.get_playing_time()[1]
        if pb_time % 5 == 0:
            self.playback_time = self.shell_player.get_playing_time()[1]
    except:
        pass


в этом случае позиция фиксируется каждую 5-ю секунду
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
angru
@angru
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы