【发布时间】:2014-08-17 16:14:20
【问题描述】:
在 Python 3.4.1 中,我试图测量一个函数运行和完成然后记录它需要多长时间。我目前正在这样做:
starttime = time.clock()
asyncio.wait_for((method()), 5)
endtime = time.clock()
print(endtime - starttime)
这通常会导致 Python 吐出大约 6.29989986222767E-06(或 0.00000629989986222767E)的内容。然后我用time.sleep试了一下:
starttime = time.clock()
asyncio.wait_for((time.sleep(3)), 5)
endtime = time.clock()
print(endtime - starttime)
这再次导致了 6.87261802845284E-06,尽管(至少我认为)它应该需要 3 秒。我已经尝试使用线程进行此操作,结果相同。你怎么看?如何衡量一个函数运行和完成需要多长时间?
【问题讨论】:
-
time模块将不准确,因为它依赖于 cpu(在较高 cpu 使用率时会变慢),请改用timeit模块 -
使用timeit模块docs.python.org/2/library/timeit.html
-
你使用
asyncio.wait_for()而不是直接调用method()的目的是什么? -
尝试测量方法完成所用的时间。但它必须测量调用该方法所花费的时间,因为 3 秒的延迟不会花费 0.00000629989986222767E 秒来调用和完成。
标签: python python-3.x