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

1

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

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, или я могу ее кодировать?

Теги:
ssh
putty

3 ответа

3
Лучший ответ

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

1

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

sys.stdout.write('\r[%s%s]' % ('=' * completed, ' ' * (total-completed)))
sys.stdout.flush()
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню