繁体   English   中英

Python中如何知道一个子进程的结束时间(linux中如何知道一个进程的结束时间)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM