У меня есть подпроцесс, который может выводить много данных на стандартный вывод.Когда генерируется слишком много данных, это приводит к зависанию подпроцесса, поскольку он ожидает очистки буфера stdout.
Вот небольшой пример ниже ...
test.py
#!/usr/local/bin/python2.7
# test.py
import subprocess
proc = subprocess.Popen(["python","./_ping_con.py"], stdout = subp.PIPE)
while proc.poll() is None:
pass
print proc.stdout.read()
... и подпроцесс:
#!/usr/local/bin/python2.7
# _ping_con.py
print(96000 * "*") # Hangs here because it's too much data for the stdout pipe
Что я хотел бы знать, может ли этот буфер быть расширен для обработки большего количества данных?Если нет, могу ли я отправлять свои данные другим способом, чтобы избежать этой проблемы?ИЛИ в основном процессе, есть ли способ узнать, заполнен ли буфер stdout и выполнить чтение?