+ -
当前位置:首页 → 问答吧 → python中如何让一个新建线程执行完后返回当前主线程?

python中如何让一个新建线程执行完后返回当前主线程?

时间:2010-06-12

来源:互联网

如题, Python中有个方法是os.system(cmd),这个函数实际会调用系统内置的命令行程序来执行系统命令,所以在命令结束后会将控制权返回给Python进程, 那么在cmd命令执行的过程中,当前Python线程是一直等待还是继续往下进行?
如果我想让Python一直等到cmd命令执行完,当前主线程才继续执行有什么好的方法吗?

作者: sanmaofly   发布时间: 2010-06-12

把主线程阻塞起来就可以了,然后让cmd线程结束时唤醒它。具体就是用Threading模块的Thread类的join([timeout])方法,无参数调用时它会一直等待被调用的线程结束。

作者: thy38   发布时间: 2010-06-12

现在的问题就是我不知道cmd线程什么时候结束, 一旦启动cmd线程的工作我也不知道什么时候结束。。。

作者: sanmaofly   发布时间: 2010-06-12

这个问题好似有点麻烦,我直接后面用死循环等待, 每隔一段时间检查cmd命令是否生成了一个特殊的文件,如果生成了就意味着已经执行完了。 但是这里对os.system()还是有些疑问。。。。

作者: sanmaofly   发布时间: 2010-06-12

ding

作者: hfCoder   发布时间: 2010-06-12

os.system都已经过时了,Python2.6中提供了subprocess模块来替代它。

subprocess模块中有Popen类,用来打开新的进程,可以执行系统命令,以及与它建立IO关系,其中:

Popen.poll() 可以检测子进程是否已经执行结束
Popen.wait() 可以等待子进程执行结束

作者: thy38   发布时间: 2010-06-13

可以用fock 好像linux的进程来判断!

作者: xwinie   发布时间: 2010-12-18