我想用程序启动几个子进程,即模块foo.py启动bar.py的几个实例.
由于我有时必须手动终止进程,因此我需要进程ID来执行kill命令.
即使整个设置非常“脏”,如果通过os.system启动进程,是否有一个很好的pythonic方法来获取进程’pID?
foo.py:
import osimport timeos.system("python bar.py \"{0}\ &".format(str(argument)))time.sleep(3)pID = ???os.system("kill -9 {0}".format(pID))
bar.py:
import timeprint("bla")time.sleep(10) % within this time,the process should be killedprint("blubb")
最佳答案os.system返回退出代码.它不提供子进程的pID.使用subprocess
模块.
import subprocessimport timeargument = '...'proc = subprocess.Popen(['python','bar.py',argument],shell=True)time.sleep(3) # <-- There's no time.wait,but time.sleep.pID = proc.pID # <--- access `pID` attribute to get the pID of the child process.
要终止进程,可以使用terminate
方法或kill
.(无需使用外部kill程序)
proc.terminate()
总结 以上是内存溢出为你收集整理的python – 如何通过os.system确定进程的pid全部内容,希望文章能够帮你解决python – 如何通过os.system确定进程的pid所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)