我最近询问如何让 python shell 获得子进程输出。并得到了非常有用的回应 - 即 为 POpen 提供一个 stdout=subprocess.PIPE
然后使用 p.stdout.readline() 并将结果提供给 print()
p = subprocess.Popen(args, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, cwd=StartPath, shell=False)
it = iter(p.stdout.readline, b'')
sRet = "## decode Error ##"
for line in it:
try:
sRet = line.rstrip().decode('utf-8')
except:
pass
print(sRet[:PYTHON_WINDOW_WIDTH])
viRet = p.wait()
但是,我担心当我同时从多个线程调用此 POpen 时会发生什么。
相同的 subprocess.PIPE 被馈送到每个 POpen。延伸到每个 readline 都从两个子流程中获取结果。
除了得到一些古怪的结果外,每个循环(其中的行:)
似乎要等到两个线程子进程都完成后再继续
这不是我想要的。
- 那么有没有一种方法可以让我的一个管道(每个线程一个),以便我可以依赖每个线程完全独立?
提前致谢