subprocess.Popen读取stdout内容阻塞的问题
#test2.pyimport sys,time
while True:
line = sys.stdin.readline()
time.sleep(50)
if line:
sys.stdout.write(line)
sys.stdout.flush()
time.sleep(1)
#run2.py
import shlex
import sys
from subprocess import *
shell_cmd = 'python C:/Users/Administrator/Desktop/test/subprocess/test2.py'
cmd = shlex.split(shell_cmd)
proc = Popen(cmd,stdin=PIPE,stdout=PIPE,stderr=STDOUT)
line = input('请输入:')
while line != 'q':
proc.stdin.write(bytes(line,'utf-8'))
proc.stdin.write(bytes("\n",'utf-8'))
proc.stdin.flush()
output = proc.stdout.readline()
print(output.decode('utf-8'))
#sys.stdout.write(output)
sys.stdout.flush()
line = input('请输入:')
我在test1.py里面加入的time.sleep(50)是为了测试run2.py里的out = proc.stdout.readline()是否会阻塞。
结果就是当管道里面没有内容的时候。
out = proc.stdout.readline()
就一直阻塞,一直到有内容读取的时候才下一步执行代码。
请问各位大神,有没有什么办法可以让out = proc.stdout.readline()不阻塞?
本帖最后由 dazhuangzhuang 于 2020-6-5 09:59 编辑
看看这个是否对你有启发
子进程中的sys.stdin.read()永不返回
https://www.icode9.com/content-3-554706.html
页:
[1]