使用python存储运行时间的shell脚本

使用python存储运行时间的shell脚本

我正在尝试使用这个来存储python程序的运行时间

{ time python experiments.py --model iwae --k $k ; } 2> time$k.txt

当我在 shell 脚本中执行此操作时,我得到

40.35user 3.12system 0:43.00elapsed 101%CPU (0avgtext+0avgdata 850788maxresident)k
0inputs+30344outputs (0major+159448minor)pagefaults 0swaps

当我只执行一行时,我得到

real    0m16.367s
user    0m15.420s
sys 0m1.436s

这正是我想要的。

有人可以帮我记录 python 脚本的运行时间并将运行时间存储在文本文件中吗?

脚本

# ! /bin/sh

for k in 3 5 10; do

echo $k

sudo ldconfig /usr/local/cuda/lib64

{ time python experiments.py --model iwae --k $k ; } 2> time$k.txt

done

答案1

time有很多因素。有外部因素/usr/bin/timeGNU 程序. 这就是bash 关键字time

$ type -a time
time is a shell keyword
time is /usr/bin/time

当您time …在交互式 shell 中运行时,通常会使用 bash,因此该time关键字会生效。

当您time …使用 在脚本中运行时/bin/sh,使用的 shell ( dash) 没有time作为关键字,并且time调用外部命令。

要获得所需的输出,请调用外部time命令带有-p选项:

-p, --portability
      Use the following format string, for conformance with POSIX
      standard 1003.2:
                real %e
                user %U
                sys %S

外部命令也更加友好。由于它不是关键字,因此您无需执行包装- -for { … }-redirection 技巧即可将输出放入文件中。有一个选项可以实现这一点:

-o FILE, --output=FILE
      Write the resource use statistics to FILE instead of to the
      standard error stream.  By default, this overwrites the file,
      destroying the file's previous contents.  This option is useful
      for collecting information on interactive programs and programs
      that produce output on the standard error stream.

输出也更加可定制,使以后的处理更加容易。使用 bash 时time,提供的选项TIMEFORMAT非常有限。

相关内容