Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查执行时间的实用程序?_Python_Shell_Execution Time - Fatal编程技术网

Python 检查执行时间的实用程序?

Python 检查执行时间的实用程序?,python,shell,execution-time,Python,Shell,Execution Time,是否有bash命令或Python库来计算执行文件/命令的时间?我希望能够决定哪种语言最适合一项任务,或者有一种方法可以确定Python代码a比Python代码B运行得更快。如果有一种方法可以做到这一点,但这个问题是离题的,请在搜索词或其他资源中留下评论。是的,它被称为time命令。如时间命令arg1 arg2 arg3中所示 这将输出3个字段,如下所示: real 0m0.631s user 0m0.154s sys 0m0.458s 第一个是实际的挂钟时间。第二个问题是程

是否有bash命令或Python库来计算执行文件/命令的时间?我希望能够决定哪种语言最适合一项任务,或者有一种方法可以确定Python代码a比Python代码B运行得更快。如果有一种方法可以做到这一点,但这个问题是离题的,请在搜索词或其他资源中留下评论。

是的,它被称为
time
命令。如
时间命令arg1 arg2 arg3中所示

这将输出3个字段,如下所示:

real    0m0.631s
user    0m0.154s
sys     0m0.458s
第一个是实际的挂钟时间。第二个问题是程序在用户空间中花费的时间。第三个是程序在内核空间中花费的时间。

时间

例如:

time ls -a
列出文件后

real    0m0.240s
user    0m0.002s
sys     0m0.004s
就资源而言,有许多可供选择的跟踪内容。有关详细信息,请参见手册页

python -m timeit "setup" "code"
如果您想计时Python代码。适用于快速且不可靠的性能基准测试。

您可以使用timeit:

from timeit import timeit
print timeit("function_2(arg)", "from __main__ import function_2, arg", number=5)
注意事项:

  • 从uuuu main_uuuu导入函数,arg
    timeit
    模块访问脚本中的函数和变量
  • 函数和相关参数必须作为字符串传递
  • number=运行次数[默认为1000000]
  • timeit返回的时间是
    number
    运行次数的总和…而不是平均值(发现我有一次…)

我使用了这个片段,我在网上某个我不记得的地方找到了它:

import atexit
import time
def secondsToStr(t):
    return "%d:%02d:%02d.%03d" % \
        reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
            [(t*1000,),1000,60,60])

line = "="*40
def log(s, elapsed=None):
    print line
    print secondsToStr(time.clock()), '-', s
    if elapsed:
        print "Elapsed time:", elapsed
    print line
    print

def endlog():
    end = time.clock()
    elapsed = end-start
    log("End Program", secondsToStr(elapsed))

def now():
    return secondsToStr(time.clock())

start = time.clock()
atexit.register(endlog)
log("Start Program")

虽然我没有接受这一点,但我还是接受了。太遗憾了,我不能接受倍数D谢谢!