В чем разница между os.read () и sys.stdin.read () в Python3 - PullRequest
0 голосов
/ 03 мая 2018

В приведенной ниже ссылке ответы показывают, что для быстрого ввода-вывода могут использоваться как os.read() / os.write(), так и sys.stdin.read() / sys.stdout.write(). Но я не нашел объяснения относительно того, какой из этих двух показателей быстрее или есть какой-то конкретный случай, когда один работает лучше, чем другой.

Может кто-нибудь объяснить, в чем разница между этими методами?

Самый быстрый ввод-вывод в Python 3?

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны измерить, чтобы проверить, но sys.stdin и sys.stdout являются io.TextIOWrapper объектами, которые, как минимум, включают дополнительную функциональность декодирования входящих данных в Unicode и кодирования исходящих данных в любая кодировка настроена для выходного потока.

На этом основании должно быть так, что os.read()/os.write() будет быстрее, поскольку это функции более низкого уровня, которые работают только с байтами, независимо от кодировки, если вы имеете дело с байтово-ориентированными данными, например, текст ASCII, двоичный файл и т. д.

Если вы профилируете функции os, вам также следует учитывать время для отдельного кодирования и декодирования данных, если этого требует ваше приложение. Вы можете обнаружить, что выполнение кодирования и ввода-вывода в два отдельных шага будет медленнее, чем методы sys.

Некоторые другие отличия в Python 3 заключаются в том, что функции os принимают / возвращают bytes объекты, тогда как объекты sys имеют дело с str объектами.

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