Найти - Пользователи
Полная версия: Динамическое получение данных от внешней программы запущенной из Popen
Начало » Python для новичков » Динамическое получение данных от внешней программы запущенной из Popen
1
test157
всем привет

пускаю внешнюю программку через Popen, которая постепенно выводит данные в stdout но в питоне эти данные я получаю только после того как их накопится большое количество, а мне нужно сразу - как только хоть что то пришло.

т.е. вот пример:
out = open('stdout.txt', 'w', 0)
p2 = Popen(["some.exe or some.py", ""], bufsize=0, stdout=out)
но данные в файл stdout.txt не падают сразу, а только после окончания выполнения программы. как это побороть?

P.S.: пишу в файл, т.к. мне нужно асхинхронное выполнение внешнего приложения. т.е. оно там бегает, а я иногда проверяю не пришли ли данные - т.е. не накидало ли это приложения что в “консоль”, Popen.communicate не подходит, т.к. он ждет окончания выполнения приложения. если есть более правильный вариант для этого то было бы супер.
Андрей Светлов
А вы откройте Popen.communicate и посмотрите, как оно работает.
Простыня длинная, конечно (если брать вместе с ._communicate) - но читаемая.
В вашем случае затык происходит на stdout_thread.join()
Дальше думайте, как именно вам нужно работать с .stdout
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB