正在创建类Stopwatch Python。不明白它为什么有用?

2024-10-04 01:26:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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=时间时钟() 部分。有了它,它产生了正确的结果,但我真的不知道它为什么会这样做? 我意识到可能有更好的方法来做到这一点,但我有点像是Python的初学者,所以我很感谢你的帮助。谢谢!我使用的是Windows系统。在


Tags: selfforreturntimedefcodestartsum
1条回答
网友
1楼 · 发布于 2024-10-04 01:26:26

你不会碰巧是个鲁比主义者吧?x.start可以在Ruby中调用方法,但不能在Python中调用方法。您需要x.start()-注意括号。您对x.stopx.reset也有相同的问题。在

a = time.clock()是有帮助的,因为time.clock()有时会(依赖于平台)返回自第一次调用clock()以来的时间,而不是从process start返回。对a的实际赋值不是做任何事情,它只是为clock创建一个起点,以便以后引用。不要依赖这一点——Python文档的状态是“返回自进程开始后的CPU时间或实时时间,或者自第一次调用clock()以来的”

相关问题 更多 >