Я использую внешний процесс, который записывает короткую строку вывода для каждого куска обрабатываемых данных. Я хотел бы отреагировать после каждой из этих строк без дополнительной задержки.
Результатом является то, что я получаю вывод в один блок после завершения всей обработки. Как я могу заставить ProcessProtocol не буферизовать стандартный вывод?
Буферизация происходит в процессе производителя, а не потребителя. Стандартная библиотека C stdout
буферизируется только при подключении к терминалу, в противном случае она полностью буферизуется. Это то, что заставляет процесс-производитель выводить данные большими порциями, а не построчно, когда он не подключен к терминалу.
Используйте утилиту stdbuf , чтобы заставить процесс-производителя 'stdout
быть буферизованным строкой.
Если процесс-производитель является скриптом Python, используйте -u
Переключатель интерпретатора Python, чтобы полностью отключить буферизацию стандартных потоков. stdbuf
утилита лучше, хотя.