Почему Python печатает строки так медленно? - PullRequest
0 голосов
/ 13 марта 2020

Скажем, у меня есть этот код:

import time
import sys

for i in range(1000):
    sys.stdout.write(str(i)+'\r')
    sys.stdout.flush()
    time.sleep(0.01)

Я ожидаю, что он напечатает 0-999 в одной строке, и я смогу видеть все номера. Но на самом деле Python будет обновлять sh очень медленно (казалось бы, 5 Гц), результат увеличится с 5 до 17 до 87 до 99 и т. Д. c.

Есть ли способ, которым я могу печатать мгновенно в одну строку? Я использую Pycharm, и я попробовал Python Stock IDLE, и он просто не будет работать. Он даже не напечатал бы в одну строку.

1 Ответ

1 голос
/ 13 марта 2020

Это будет печатать каждое число:

import time
import sys

for i in range(1000):
    print(str(i) , '\r', end='')
    time.sleep(0.01)

Это будет печатать каждое число в «Новой строке»

import time
import sys

for i in range(1000):
    print(str(i)+'\r')
    time.sleep(0.01)

Если вы хотите напечатать все числа на одном и том же строка, разделенная пробелом (не будет отображаться до «конца» l oop):

import time
import sys

for i in range(1000):
    print(str(i), " ", end = ''),
    time.sleep(0.01)

Для печати «строки состояния» используйте:

from time import sleep
import sys

for i in range(21):
    sys.stdout.write('\r')
    sys.stdout.write("[%-20s] %d%%" % ('='*i, 5*i))
    sys.stdout.flush()
    sleep(0.25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...