我正在处理一个将在命令行中运行的Python脚本。其思想是从用户那里获得一个命令,运行它,然后提供用户提供的命令的挂钟时间和CPU时间。请参阅下面的代码。
#!/usr/bin/env python
import os
import sys
def execut_cmd(cmd_line):
utime = os.system('time '+cmd_line)
# Here I would like to store the wall-clock time in the Python variable
# utime.
cputime = os.system('time '+cmd_line)
# Here the CPU time in the cputime variable. utime and cputime are going to
# be used later in my Python script. In addition, I would like to silence the
# output of time in the screen.
execut_cmd(sys.argv[1])
print ('Your command wall-clock time is '+utime)
print ('Your command cpu time is '+ cputime)我怎样才能做到这一点?此外,如果有一个比使用‘时间’更好的方法,我是开放的尝试。
发布于 2019-06-19 16:51:17
..。在Windows上,time.clock()具有微秒粒度,但time.time()的粒度是每秒的1/60。在Unix上,time.clock()有1/100的第二个粒度,而time.time()要精确得多。在这两个平台上,default_timer()测量的都是墙壁时钟时间,而不是CPU时间。这意味着在同一台计算机上运行的其他进程可能会干扰计时。
对于墙壁时间,您可以使用timeit.default_timer()来获取具有上述最佳粒度的定时器。
在Python3.3及以上版本中,您可以使用time.process_time()或time.process_time_ns()。下面是文件条目 for process_time方法:
返回系统和当前进程用户CPU时间之和的值(以小数秒为单位)。它不包括睡眠期间经过的时间。从定义上讲,这是一个全过程的过程。返回值的引用点未定义,因此只有连续调用的结果之间的差异是有效的。
发布于 2022-03-17 00:03:51
为了提供当前的壁时间,可以将time.time()用于得到划时代的时间。
为了提供经过的墙壁时间,可以在操作开始和结束时使用time.perf_counter(),结果的差异反映了运行时间。如其他答案所述,不能将结果用于给出参照点未定义。的绝对时间,您可以使用timeit.default_time()但使用截至python 3.3
为了提供经过的CPU时间,time.process_time()可以以类似于time.perf_counter()的方式使用。这将是提供系统和用户CPU时间的总和。
发布于 2020-01-06 17:11:41
由于时间有限,我在Linux系统上使用了计时函数。我观察到
timeit.default_timer()和time.perf_counter()数值给出了同样的结果。timeit.default_timer()、time.perf_counter()和time.time()几乎都给出了相同的结果。因此,这意味着这些函数中的任何一个都可以用于度量任何进程的运行时间或墙时间。time.time()与其他人的区别在于,它给出了epoch的当前时间,后者来自,1970年1月1日上午12:00。time.clock()和time.process_time()也给出了相同的数值。time.process_time()最适合测量cpu时间,因为time.clock()在python 3中已经不推荐使用了。https://stackoverflow.com/questions/56672370
复制相似问题