Python stdout, индикатор выполнения и sshd с Putty не обновляются регулярно - PullRequest
1 голос
/ 26 апреля 2010

У меня есть мертвый простой индикатор прогресса, использующий что-то вроде следующего:

import sys
from time import sleep

current = 0
limit = 50
while current <= limit:
    sys.stdout.write('\rSynced %s/%s orders' % (current, limit))
    current_order += 1
    sleep(1)

Работает нормально, кроме как через ssh с Putty. Замазка обновляется только каждые 3 минуты или, если строка заканчивается \ n. Это параметр Putty, sshd_config, или я могу написать код вокруг него?

Ответы [ 3 ]

3 голосов
/ 26 апреля 2010

Попробуйте сделать sys.stdout.flush() после sys.stdout.write вызова.

1 голос
/ 26 апреля 2010

Вы можете использовать flush() для принудительного обновления.

sys.stdout.write('\r[%s%s]' % ('=' * completed, ' ' * (total-completed)))
sys.stdout.flush()
0 голосов
/ 27 апреля 2010

Вместо этого используйте sys.stderr.write, который не буферизуется как sys.stdout, и таким образом вы отделяете индикатор прогресса от (предположительно) полезного вывода процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...