在Python中测量函数运行和完成所需的时间
在Python3.4.1中,我试图测量函数运行和完成所需的时间,然后记录它。我现在是这样做的:在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.
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秒来调用和完成。