Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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_Python 3.x - Fatal编程技术网

在Python中测量函数运行和完成所需的时间

在Python中测量函数运行和完成所需的时间,python,python-3.x,Python,Python 3.x,在Python3.4.1中,我试图测量函数运行和完成所需的时间,然后记录它。我现在是这样做的: starttime = time.clock() asyncio.wait_for((method()), 5) endtime = time.clock() print(endtime - starttime) 这通常会导致Python吐出大约6.2998986222767e-06(或0.00000629989986222767E)的内容。然后我试了一下。睡眠: starttime = time.

在Python3.4.1中,我试图测量函数运行和完成所需的时间,然后记录它。我现在是这样做的:

starttime = time.clock()
asyncio.wait_for((method()), 5)
endtime = time.clock()
print(endtime - starttime)
这通常会导致Python吐出大约6.2998986222767e-06(或0.00000629989986222767E)的内容。然后我试了一下。睡眠:

starttime = time.clock()
asyncio.wait_for((time.sleep(3)), 5)
endtime = time.clock()
print(endtime - starttime)

这再次导致了6.87261802845284E-06,尽管(至少我认为)应该需要3秒钟。我已经用线程尝试过了,结果是一样的。你怎么认为?如何测量函数运行和完成所需的时间?

我通常使用此装饰器来计时函数:

import time                                                
def timeit(method):
    def timed(*args, **kw):
        ts = time.time()
        result = method(*args, **kw)
        te = time.time()
        print '%r (%r, %r) %2.2f sec' % \
              (method.__name__, args, kw, te-ts)
        return result

    return timed

@timeit
def timeme():
    time.sleep(3)
time.time()
为基准测试提供了比
time.clock()
更精确的时间,这主要是因为
time.clock()
测量CPU时间
time.time()
将返回从epoch开始经过的秒数(即墙时间),这正是您需要的


或者您也可以使用
timeit

进行快速性能分析。我使用以下两行(加上导入):

导入时间
将numpy作为np导入
t=time.time()
# ...
打印np.round(time.time()-t,3),“已用秒”
它很短,很简单,是我通常需要的


(在大多数情况下,我已经导入了
numpy
,所以这对我来说没有开销。)

我承认我对Python的asyncio不是很熟悉,但我相信问题不在于你的时间安排,而在于你对
asyncio
的使用

我认为你只是在用method()的价值创造一个未来,然而这就是你所要计时的全部:这个承诺的实际创造

您没有对未来价值的实际评估进行计时。这就是为什么定时睡眠(3)和方法()花费的时间大致相同


我建议尝试更改
asyncio.wait_for((method())、5)
yield from asyncio.wait_for((method())、3)
或者如果可以的话,只更改
timeing method()

time
模块将不准确,因为它取决于cpu(cpu使用率较高时会变慢),请使用
timeit
模块而不是使用timeit模块使用
asyncio的目标是什么。wait_for()
而不是调用
方法()
directly?尝试测量方法完成所需的时间。但它必须测量调用该方法所用的时间,因为3秒的延迟并不需要0.0000062998986222767E秒来调用和完成。