|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
快把小甲鱼的零基础python学完了,这里碰到了一个问题,课后作业要求我们写一个计时器,计算(测试)函数的运行时间:
这里使用process_time就无法计时,无论如何输出的时间都是0.0000s
网上说的那些什么cpu进程时间之类的我真的不理解,求教。。
代码如下:
- import time
- class Timer:
- start_time = 0
- end_time = 0
- workingTime = 0
- mode = 1
- def __init__(self,func,times = 1):
- print("可以使用set_timer方法改变计时器的运行模式")
- print("传入1使用 perf_counter ,传入2使用 process_time")
- print("默认计时方式为 perf_counter")
- self.times = times
- self.func = func
- def __str__(self):
- return_str = "计时器运行了" + str(self.workingTime) + "秒"
- return return_str
- def __repr__(self):
- return_str = "计时器运行了" + str(self.workingTime) + "秒"
- return return_str
-
- def set_timer(self,mode):
- if mode == 1:
- self.mode == mode
- print("修改成功,计时模式为 perf_counter")
- if mode == 2:
- print("修改成功,计时模式为 process_time")
- self.mode == mode
-
- def start(self):
- if self.mode == 1:
- self.strat_time = time.perf_counter()
- print("计时开始!")
- if self.mode == 2:
- self.start_time = time.process_time()
- print("计时开始!")
- def stop(self):
- if self.mode == 1:
- self.end_time = time.perf_counter()
- self.workingTime = self.end_time - self.start_time
- print("计时结束!")
- print("计时器运行了%f秒"%(self.workingTime))
- if self.mode == 2:
- self.end_time = time.process_time()
- self.workingTime = self.end_time - self.start_time
- print("计时结束!")
- print("计时器运行了%f秒"%(self.workingTime))
- def timing(self):
- self.mode = 2
- self.start()
- for i in range(self.times):
- self.func
- self.stop()
- def func1():
- print("Hello World")
- t1 = Timer(func1,100)
- t1.timing()
复制代码
这里使用process_time作为计时模式时输出如下:
不加括号也能运行是因为 func 是一个函数签名,也就是这个函数的地址,所以你这个程序相当于
这样子写是不会报错的。
运行倒是能正常运行,可是根本就没进行什么打印或计算,,连赋值这种操作都没有,而且那个函数也根本没运行,所以就没耗费什么时间,趋近于0。
|
|