Почему input() читает символы, введенные во время time.sleep() в терминальной программе?Python

Программы на Python
Ответить
Anonymous
 Почему input() читает символы, введенные во время time.sleep() в терминальной программе?

Сообщение Anonymous »

Вопрос:

Я пишу простую программу на основе терминала на Python и заметил неожиданное поведение при объединении time.sleep() и input().
Вот минимальный пример:

Код: Выделить всё

import time

print("Starting")
time.sleep(3)
input()
Если я ввожу символы, пока программа находится в вызове time.sleep(3), эти символы немедленно считываются функцией input() после завершения сна. Я ожидал, что метод input() будет принимать вводимые данные только после его вызова.
Почему это происходит? Обрабатывается ли ввод Python или он буферизуется терминалом или операционной системой? Каков правильный способ предотвратить использование ранее введенных данных функцией input() в программах на основе терминала?
Мне особенно интересно понять основную причину такого поведения, а не просто обходной путь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... al-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»