Ответ 1
Встроенные функции input
и sys.stdin.readline
не выполняют точно то же самое, а какие быстрее могут зависеть от деталей именно того, что вы делаете. Как отметил aruisdante, разница в Python 3 меньше, чем в Python 2, когда была предоставлена цитата, но все же есть некоторые отличия.
Первое отличие состоит в том, что input
имеет необязательный параметр запроса, который будет отображаться, если интерпретатор работает в интерактивном режиме. Это приводит к некоторым накладным расходам, даже если приглашение пуст (по умолчанию). С другой стороны, это может быть быстрее, чем выполнение print
перед каждым вызовом readline
, если вам нужно приглашение.
Следующее отличие состоит в том, что input
удаляет любую новую строку с конца ввода. Если вы все равно разделите это, вы можете быстрее input
сделать это для вас, а не делать sys.stdin.readline().strip()
.
Последнее различие заключается в том, как указывается конец ввода. input
будет поднимать EOFError
, когда вы вызываете его, если больше нет ввода (stdin был закрыт на другом конце). sys.stdin.readline
, с другой стороны, вернет пустую строку в EOF, которую вы должны знать для проверки.
Существует также третий вариант, использующий протокол итерации файла на sys.stdin
. Скорее всего, это будет похоже на вызов readline
, но, возможно, более приятная логика.
Я подозреваю, что, хотя различия в производительности между вашими различными опциями могут существовать, они, похоже, меньше, чем временные затраты на простое чтение файла с диска (если он большой) и выполнение того, что вы делаете с ним, Я предлагаю вам избежать ловушки преждевременной оптимизации и просто сделать то, что наиболее естественно для вашей проблемы, и если программа слишком медленная (где "слишком медленно" очень субъективно), вы делаете некоторые профилирования, чтобы увидеть, что делает больше всего время. Не прилагайте много усилий для решения различных способов ввода ввода, если это не имеет значения.