В документе wait (http://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait) говорится:
Предупреждение
Это будет заторможен при использовании stdout = PIPE и/или stderr = PIPE и дочерний процесс генерирует достаточный выход в канал таким образом, что он блокирует ожидая, когда буфер буфера OS примет больше данных. Использовать связь() чтобы избежать этого.
Из этого, я думаю, communicate
может заменить все использование wait()
, если retcode
не требуется. И даже если stdout
или stdin
не являются PIPE, я также могу заменить wait()
на communicate()
.
Это правильно? Спасибо!