Если я использую subprocess.Popen
, я могу использовать communicate()
для небольших выходов.Альтернатива subprocess.Popen.communicate() для потоковой передачи
Но если подпроцесс займет значительное время и даст значительный результат, я хочу получить к нему доступ в виде потоковых данных.
Есть ли способ сделать это? Документы Python сказать
Предупреждение: Используйте
communicate()
вместо.stdin.write
,.stdout.read
или.stderr.read
избежать тупиков в связи с каким-либо из других буферов OS труб, заполняющих и блокирования дочернего процесса.
Я бы очень хотел, чтобы получить доступ к выходному процессу в качестве файлового типа объекта:
with someMagicFunction(['path/to/some/command','arg1','arg2','arg3']) as outpipe:
# pass outpipe into some other function that takes a file-like object
, но не могу понять, как это сделать.
О, это умно - спасибо! –