首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bash内置的“时间”捕获Python变量中的挂钟时间和CPU时间?

问如何使用bash内置的“时间”捕获Python变量中的挂钟时间和CPU时间?
EN

Stack Overflow用户
提问于 2019-06-19 16:40:59
回答 3查看 6.3K关注 0票数 4

我正在处理一个将在命令行中运行的Python脚本。其思想是从用户那里获得一个命令,运行它,然后提供用户提供的命令的挂钟时间和CPU时间。请参阅下面的代码。

代码语言:javascript
复制
#!/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)

我怎样才能做到这一点?此外,如果有一个比使用‘时间’更好的方法,我是开放的尝试。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-19 16:51:17

来自墙壁时间的Python文档

..。在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时间之和的值(以小数秒为单位)。它不包括睡眠期间经过的时间。从定义上讲,这是一个全过程的过程。返回值的引用点未定义,因此只有连续调用的结果之间的差异是有效的。

票数 6
EN

Stack Overflow用户

发布于 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时间的总和。

票数 3
EN

Stack Overflow用户

发布于 2020-01-06 17:11:41

由于时间有限,我在Linux系统上使用了计时函数。我观察到

  1. timeit.default_timer()和time.perf_counter()数值给出了同样的结果。
  2. 此外,在测量时间间隔的持续时间时,timeit.default_timer()、time.perf_counter()和time.time()几乎都给出了相同的结果。因此,这意味着这些函数中的任何一个都可以用于度量任何进程的运行时间或墙时间。
  3. 我想我还应该指出,time.time()与其他人的区别在于,它给出了epoch的当前时间,后者来自,1970年1月1日上午12:00。
  4. time.clock()和time.process_time()也给出了相同的数值。
  5. time.process_time()最适合测量cpu时间,因为time.clock()在python 3中已经不推荐使用了。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56672370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档