В каком-то коде питона я заметил, что -u используется для запуска интерпретатора python. Я посмотрел на страницу руководства для python, но я не мог многое из этого сделать. Просьба привести несколько примеров.
Python: значение опции -u?
Ответ 1
От python --help
:
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x see man page for details on internal buffering relating to '-u'
В manpage указано:
-u Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode. Note that there is internal buffering in xreadlines(), readlines() and file-object iterators ("for line in sys.stdin") which is not influenced by this option. To work around this, you will want to use "sys.stdin.readline()" inside a "while 1:" loop.
Python открывает потоки stdin, -out и -error в буферизованном режиме; он будет читать или писать в больших кусках, сохраняя данные в памяти до тех пор, пока не будет достигнут порог. -u
отключает эти буферы.
Кроме того, python может интерпретировать новые строки в открытых файлах и переводить их с и на новую строку новой строки (текстовый режим). Опция -u
отключает этот перевод, позволяя обрабатывать двоичные данные, не беспокоясь о том, что может произойти с комбинациями \r\n
. Это эквивалентно использованию режимов rb
или wb
при открытии файлов с помощью функции open()
.
Ответ 2
Python оптимизирован для чтения и печати большого количества данных. Одна из этих оптимизаций заключается в том, что стандартный ввод и вывод интерпретатора Python buffered. Это означает, что всякий раз, когда программа пытается использовать один из этих потоков, интерпретируемые блокируют использование в больших кусках, а затем отправляют куски за один раз. Это быстрее, чем отправка каждого отдельного чтения/записи через отдельно, но, очевидно, имеет тот недостаток, что данные могут "задерживаться" посередине.
Флаг -u отключает это поведение.