创建类秒表Python。不要了解它为何起作用?

时间:2014-10-15 01:04:52

标签: python windows

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系统。

1 个答案:

答案 0 :(得分:4)

你不会碰巧是红宝石,是吗? x.start可以在Ruby中调用方法,但不能在Python中调用。您需要x.start() - 注意括号。您对x.stopx.reset存在同样的问题。

a = time.clock()正在帮助,因为time.clock()有时会(平台相关)返回自第一次调用clock() 以来的时间,而不是从流程开始。对a的实际分配不做任何事情,它只是为clock创建一个起点,以便稍后引用。不要依赖于此 - Python文档声明“自第一次调用clock()以来,自进程开始以来,返回CPU时间或实时。”