马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 heidern0612 于 2019-1-13 11:36 编辑
写心得的过程都是自我思考的过程,借鉴了很多论坛前辈和互联网大佬的经验,仓促间难免有所疏漏,如有错误,恳请指出,不胜感激。
简单解释下老师的代码吧,当回顾了:
import time as t
class MyTimer:
#初始化数据
def __init__(self, func, number=1000000): #func代表后传入的函数名
self.prompt = "未开始计时!" #直接调用的话,会显示这一句。
self.lasted = 0.0
self.default_timer = t.perf_counter
self.func = func
self.number = number
def __str__(self):
return self.prompt
__repr__ = __str__
#相加
def __add__(self, other):
result = self.lasted + other.lasted
prompt = "总共运行了 %0.2f 秒" % result #格式化字符串,小数点后两位
return prompt
# 内部方法,计算运行时间
def timing(self):
self.begin = self.default_timer()
for i in range(self.number): #for循环运行后传入的函数,运行number次。
self.func()
self.end = self.default_timer()
self.lasted = self.end - self.begin
self.prompt = "总共运行了 %0.2f 秒" % self.lasted
# 设置计时器(time.perf_counter() 或 time.process_time())
def set_timer(self, timer):
if timer == 'process_time':
self.default_timer = t.process_time
elif timer == 'perf_counter':
self.default_timer = t.perf_counter
else:
print("输入无效,请输入 perf_counter 或 process_time")
后来老师自定义了一个test函数如下:
def test():
text = "I love FishC.com!"
char = 'o'
if char in text:
pass
在IDLE里运行t1的时间大约0.15秒。
之后定义了个t2,修改运行次数为一亿次,运行结果大约为10几秒(视个人电脑CPU计算能力):
二者相加求结果。
这道题的难点在于,一开始没太想明白老师出这个题什么意思 。
我一直以为func是类中的timing,结果就绕糊涂了。
后来琢磨了半天,才弄明白需要自己外传一个函数进去。
|