我正在测试一些竞争条件,所以我需要知道进程的结束时间。我用 python subprocess.popen
启动子进程我可以从 Popen
对象中获取 pid,但是我怎么知道它的结束时间?有没有办法直接从子流程模块中获取它?如果没有,在 Linux 中,是否可以知道给定 pid 的结束时间? (我并行运行多个子进程,所以我不能只在 subprocess.popen 之后使用 time
类来知道结束时间,我认为子进程正在后台运行,所以我想我是否可以搜索这个pid 一直存在,一旦它不再存在(意味着它已经完成),我可以以某种方式知道它的结束时间)
答案 0 :(得分:0)
我认为它可以工作的一件事是使用检测某个进程何时终止或完成的线程进行测试。当该线程正在测试时,您可以尝试以下操作:
duration=ps -p *the process PID* -o etime
将返回正在执行的时间。
然后,当进程完成或被您杀死时,您可以使用 duration
变量来检查时间。
此脚本可以帮助您:
#!/bin/bash
while ps -p $1 > /dev/null; do
duration=`ps -p $1 -o etime`
sleep 1;
done;
echo "Process finished. Time: "$duration
其中 $1 表示传递给脚本的参数。该参数必须包含您的进程的 PID 编号。 但是,如果不想通过将参数传递给脚本来执行此操作,您可以在该脚本中获取进程的 PID 并执行您想要的操作。