file di sp.py:?Come posso sapere se il mio sottoprocesso è in attesa per il mio ingresso (in python3)
#!/usr/bin/env python3
s = input('Waiting for your input:')
print('Data:' + s)
file di 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 bloccherà nella prima pobj.stdout.read()
, perché sp.py mi sta aspettando.
Ma se voglio elaborare la stringa 'In attesa di input:' per prima cosa, come posso sapere se sp.py mi sta aspettando?
In altre parole, desidero restituire pobj.stdout.read()
quando sp.py è in attesa (o sta dormendo a causa di time.sleep()
).
Hai provato a usare 'pobj.communicate', come consigliato nel [doc sottoprocesso] (http://docs.python.org/library/ subprocess.html)? –
Questa domanda potrebbe essere utile: http://stackoverflow.com/questions/375427/non-blocking-read-on-a-subprocess-pipe-in-python –
@PierreGM Grazie mille. 'communicate' terminerà il sottoprocesso dopo essere stato chiamato. –