![](/img/trans.png)
[英]how to know the start time/end time of Python subprocesses Popen running in parallel
[英]How to know the end time of a subprocess in Python(how to know the end time of a process in linux)
我正在测试一些竞争条件,所以我需要知道一个过程的结束时间。 我用 python subprocess.popen
启动子进程我可以从Popen
object 获取 pid,但我怎么知道它的结束时间? 有没有办法直接从子流程模块中获取它? 如果没有,在 Linux 中,是否可以知道给定 pid 的结束时间? (我正在并行运行多个子进程,所以我不能只在 subprocess.popen 之后使用time
class 来知道结束时间,我认为子进程正在后台运行,所以我在想我是否可以一直搜索这个 pid ,一旦它不再存在(意味着它已经完成),我可以以某种方式知道它的结束时间)
我猜它可能起作用的一件事是使用检测某个进程何时被终止或完成的线程进行测试。 当该线程正在测试时,您可以尝试以下操作: 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 号。 但是,如果不想通过 arguments 将其传递给脚本,则可以在该脚本中获取进程的 PID 并执行您想要的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.