不知主线程和子线程要做怎样的设置,请大伙帮忙。
以下是我的测试代码,只能实现在子线程结束之后,才能回传stdout信息。
import subprocess
def main():
process1 = subprocess.Popen("python sub.py", shell=False, stdout = subprocess.PIPE, stderr=subprocess.STDOUT)
print process1.communicate()[0]
if __name__ == '__main__':
main()
以下是上面子线程要调用的代码
sub.py
import subprocess
def main():
process1 = subprocess.Popen("ping 128.101.1.4 -n 1", shell=True, stdout = subprocess.PIPE, stderr=subprocess.STDOUT)
process2 = subprocess.Popen("ping 128.101.1.4 -n 3", shell=False, stdout = subprocess.PIPE, stderr=subprocess.STDOUT)
process3 = subprocess.Popen("ping 128.101.1.4 -n 6", shell=False, stdout = subprocess.PIPE, stderr=subprocess.STDOUT)
while 1:
time.sleep(1)
ret1 = subprocess.Popen.poll(process1)
ret2 = subprocess.Popen.poll(process2)
if ret1 is None:
print process1.pid, " running"
else:
print process2.pid, " Termined"
if ret2 is None:
print process2.pid, " running"
else:
print process2.pid
win32api.TerminateProcess(int(process3._handle), -1)
break
#if __name__ == '__main__':
main()