用Python控制进程

3 投票
1 回答
1708 浏览
提问于 2025-04-15 23:28

我想在Python中控制几个相同类型的子进程(我在使用Linux)。我想要做的事情有:

  • 启动它们。
  • 停止它们。
  • 询问它们是否还在运行。

我可以用spawnl来启动一个进程,并获取它的进程ID(pid)。然后我可以用这个pid来停止它,使用kill命令。而且我相信也有办法通过pid来检查它是否还在运行。

但问题是,如果发生以下情况:我启动了一个进程,记住了它的pid。这个进程结束了,我没有注意到,然后另一个完全不同的进程开始并被分配了同样的pid。这样我试图杀掉我的进程时,结果却杀掉了一个完全不同的进程。

那么,在Python中启动和控制进程的更好方法是什么呢?谢谢!

1 个回答

7

你可以使用 subprocess.Popen 来启动另一个进程,并保存生成的 Popen 对象。通过这个对象的方法,你可以检查这个进程是否还在运行,等待它完成,终止它,或者直接杀掉它——这一切都不会出现基于进程ID的混淆问题!另外,这种方法在不同的操作系统上都能用,虽然在这个情况下你可能不太在意。

撰写回答