plików sp.py:Skąd mogę wiedzieć, czy mój podproces czeka na mojego wejścia (w python3)
#!/usr/bin/env python3
s = input('Waiting for your input:')
print('Data:' + s)
plik main.py
import subprocess as sp
pobj = sp.Popen('sp.py',stdin=sp.PIPE,stdout=sp.PIPE,shell=True)
print(pobj.stdout.read().decode())
pobj.stdin.write(b'something...')
print(pobj.stdout.read().decode())
main.py zablokuje w najpierw pobj.stdout.read()
, ponieważ czeka na mnie sp.py.
Ale jeśli chcę przetworzyć ciąg "Oczekiwanie na twoje dane wejściowe:" najpierw, skąd mogę wiedzieć, czy sp.py na mnie czeka?
Innymi słowy, chcę, aby pobj.stdout.read()
powrócił, gdy sp.py czeka (lub śpi z powodu time.sleep()
).
próbowałeś użyć 'pobj.communicate', jak poinformowała w subprocess [doc] (http://docs.python.org/library/ subprocess.html)? –
To pytanie może być pomocne: http://stackoverflow.com/questions/375427/nonblocking-read-on-a-subprocess-pipe-in-python –
@PierreGM Wielkie dzięki. "komunikuj" zakończy podproces po wywołaniu. –