Я вызываю исполняемый файл, записанный в C, через конструктор Popen в Python, чтобы прочитать то, что обычно выводит исполняемый файл в консоль/терминал. Printf в коде C завершается с помощью \ n регулярно, и он постоянно выводит в терминал, пока не будет прерывается, например, прерывание клавиш.
Код: Выделить всё
import subprocess
import time
proc = subprocess.Popen(["PATH TO EXECUTABLE"],stdout=subprocess.PIPE)
while True:
start_time = time.time()
line = proc.stdout.readline()
print(line)
print(time.time()-start.time)
Я измерил время для целей отладки. Микросекунд, но каждый 40 -й или около того итерации демонстрирует то же поведение, что и первая итерация снова (
от 20 до 30 секунд , чтобы сделать line = proc.stdout.readline () ). Похоже, что чтение stdout занимает много времени, возможно, потому, что какой-то буфер заполняется, прежде чем его выпускают в stdout ? Я не думаю, что исполняемый файл каким-то образом буферирует, потому что новая линия обычно промывает буфер в C. Я не знаю, является ли это проблемой с кодом C или сценарием Python.>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -of-stdout