我正在尝试使用这个来存储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/time
GNU 程序. 这就是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
非常有限。