Python: использование tempfile в качестве канала - PullRequest
0 голосов
/ 09 мая 2018

TL; DR: как получить два НЕЗАВИСИМЫХ файловых объекта / дескриптора временного файла (без видимого имени)?

У меня много данных, и мне нужно передать команду для обработки, т.е.

tmp = tempfile.SpooledTemporaryFile()
p = subprocess.Popen(['command'], stdin=subprocess.PIPE, stdout=tmp)
for d in get_data():
    p.stdin.write(d)

Таким образом, я не могу прочитать tmp до завершения p. Я пытался получить другой дескриптор tmp, но кажется невозможным. os.dup не помогает, потому что возвращаемый дескриптор является просто ссылкой.

ПРИМЕЧАНИЕ: я не могу использовать subprcess.PIPE для вывода, потому что это может заблокировать процесс. Я также не хочу использовать другой поток для чтения, так как хочу, чтобы код был простым.

Спасибо.

...