如果 python 中的 subprocess.Popen() 打开的连接被关闭

Shi*_*a T 5 python mysql popen

我对 python 很陌生。我想知道,使用时subprocess.Popen需要关闭连接还是子进程自动关闭连接?

process = subprocess.Popen(["mysql", "-uroot", "-ppassword", "database"], 
           stdin = subprocess.PIPE, 
           stdout = subprocess.PIPE, 
           stderr = subprocess.PIPE) 
process_out, process_err = process.communicate(file("test.sql").read())
print process_out
Run Code Online (Sandbox Code Playgroud)

glg*_*lgl 3

process是代表子流程的对象。有了它,你可以做你想做的一切,但最后,在处理完所有通信之后,你应该.wait()为它做准备,以免僵尸进程持续太长时间。

只有.wait()在子进程真正从操作系统的视野中消失之后。

如果您自己处理通信,则上述内容有效。但是,如果您的情况允许您使用该.communicate()方法并且您这样做了,则不必调用.wait(),因为它会为您这样做。