tập tin sp.py:Làm thế nào tôi có thể biết liệu tiến trình con của tôi đang chờ đợi đầu vào của tôi (trong python3)
#!/usr/bin/env python3
s = input('Waiting for your input:')
print('Data:' + s)
tập tin 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 sẽ chặn trong đầu tiên pobj.stdout.read()
, bởi vì sp.py đang chờ tôi.
Nhưng nếu tôi muốn xử lý chuỗi 'Đang chờ bạn nhập:' trước tiên, làm cách nào để biết liệu sp.py có đang đợi tôi không?
Nói cách khác, tôi muốn pobj.stdout.read()
trả lại khi sp.py đang chờ (hoặc ngủ vì time.sleep()
).
Các bạn đã cố gắng sử dụng 'pobj.communicate', như khuyến cáo trong [subprocess doc] (http://docs.python.org/library/ subprocess.html)? –
Câu hỏi này có thể hữu ích: http://stackoverflow.com/questions/375427/non-blocking-read-on-a-subprocess-pipe-in-python –
@PierreGM Cảm ơn rất nhiều. 'communication' sẽ chấm dứt tiến trình con sau khi được gọi. –