【发布时间】:2019-08-23 20:26:38
【问题描述】:
我创建了一个简单的应用程序,但我意识到我的代码运行非常缓慢。这个应用程序包括一遍又一遍地调用相同的方法。我尝试调查该问题,结果发现多次调用相同的函数/方法导致 Python 有时需要 15 毫秒才能执行一个空函数(通过)。
我在 Lenovo ThinkPad i7 CPU 上运行 Windows 10 Home 64 位 函数/方法的代码越少,运行时间为 15 毫秒的机会就越小,但是,它永远不会消失。
代码如下:
import time
class Clock:
def __init__(self):
self.t = time.time()
def restart(self):
dt = time.time() - self.t
t = time.time()
return dt * 1000
def method():
pass
for i in range(100000):
c = Clock()
dt = c.restart()
if dt > 1.:
print(str(i) + ' ' + str(dt))
我希望我永远不会打印出任何东西,但是平均结果如下所示:
6497 15.619516372680664
44412 15.622615814208984
63348 15.621185302734375
平均 100000 次中的 1-4 次从启动时钟到得到结果(这是一个空函数调用和一个简单的减法和变量赋值)经过的时间是 15.62.. 毫秒,这使得运行时间真的很慢。 有时经过的时间是 1 毫秒。
感谢您的帮助!
【问题讨论】:
-
15.6 ms 是您的 Windows 系统上的计时器分辨率。
-
编辑:对不起,忘记在时间测量之间调用该方法,但无论如何问题仍然存在。有和没有来电。
-
但是“restart”不是空的:它调用time.time两次并进行乘法
-
如果你只是在循环中重复运行
time.time(),你会得到什么?你有没有得到 0 到 15.6 之间的任何东西?
标签: python