- 论坛徽章:
- 0
|
要求:运行子线程之后,子线程如果有输出信息,就立刻传回主线程。
不知主线程和子线程要做怎样的设置,请大伙帮忙。
以下是我的测试代码,只能实现在子线程结束之后,才能回传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()
复制代码 |
|