import time #useful for measuring code execution
class StopWatch:
def __init__(self, startTime = 0, endTime = 0, elapsedTime = 0):
self.__startTime = startTime
self.__endTime = endTime
self.__elapsedTime = elapsedTime
def start(self):
self.__startTime = time.clock()
def stop(self):
return self.getElapsedTime()
def reset(self):
self.__startTime = 0
self.__elapsedTime = 0
def getstarttime(self):
return self.__startTime
def getendtime(self):
return self.__endTime
def getElapsedTime(self):
elapsedTime = self.__elapsedTime
elapsedTime +=((time.clock() - self.__startTime) * 1000)
return elapsedTime
def main():
x = StopWatch()
x.start
a = time.clock() #code only works with this line of code in place (I don't understand why?)
sum = 0
for i in range(1 , 10000000):
sum += i
x.stop
print("Elapsed execution time is", x.getElapsedTime())
print(sum)
x.reset
main()
如果删除,代码无法生成正确的结果 a = time.clock() 一部分。有了它,它产生了正确的结果,但我不确定为什么这样做? 我意识到可能有更好的方法来做到这一点,但我是Python的初学者,所以我很感激帮助。谢谢!我正在使用Windows系统。
答案 0 :(得分:4)
你不会碰巧是红宝石,是吗? x.start
可以在Ruby中调用方法,但不能在Python中调用。您需要x.start()
- 注意括号。您对x.stop
和x.reset
存在同样的问题。
a = time.clock()
正在帮助,因为time.clock()
有时会(平台相关)返回自第一次调用clock()
以来的时间,而不是从流程开始。对a
的实际分配不做任何事情,它只是为clock
创建一个起点,以便稍后引用。不要依赖于此 - Python文档声明“自第一次调用clock()以来,自进程开始或以来,返回CPU时间或实时。”