app.py
import subprocess
import time
if __name__ == '__main__':
outs = ''
p = subprocess.Popen(['python3', 'app2.py'], stdout=subprocess.PIPE,
text=True)
try:
p.communicate(timeout=3)
except subprocess.TimeoutExpired:
p.kill()
outs, _ = p.communicate()
print(outs)
app2.py
import subprocess
import time
if __name__ == '__main__':
while True:
print("counter")
time.sleep(1)
根据文档(https://docs.python.org/3/library/subprocess.html)
如果进程在 timeout 秒后仍未终止,则会引发 TimeoutExpired 异常。捕获此异常并重试通信不会丢失任何输出。
然而运行
python3 app.py
实际上没有产生任何结果,为什么?
我阅读了所有文档并做了实验,但没有帮助