鱼C论坛

 找回密码
 立即注册
查看: 3299|回复: 6

关于计时器set_timer()的问题

[复制链接]
发表于 2017-8-7 19:48:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 亭ting 于 2017-8-8 07:53 编辑

用perf_counter()和process_time()作为计时器时,对于程序中的定义的计时器set_timer()函数不太明白,可不可谁来解释解释,这里又不是调用,究竟什么时候用的,怎么用的,什么意思,不是很明白?
  1. import time as t
  2. class MyTimer:
  3.     def __init__(self):
  4.         
  5.         self.prompt = '未开始计时'
  6.         self.lasted = 0.0
  7.         self.begin = 0
  8.         self.end = 0
  9.         self.default_timer = t.perf_counter
  10.     def __str__(self):  
  11.         return self.prompt

  12.     __repr__ = __str__

  13.     def __add__(self,other):
  14.         result = self.lasted + other.lasted
  15.         prompt = '总共运行了%0.2f秒'%result
  16.         return prompt
  17.     #开始计时
  18.     def start(self):
  19.         self.begin = self.default_timer()    [color=Red]#该语句是什么意思,是赋值还是调用, self.default_timer()这算个函数吗?那为什么_init_中赋值没加括号[/color]
  20.         self.prompt = '提示:请先调用stop()停止计时'
  21.         print('计时开始...')

  22.     #停止计时
  23.     def stop(self):
  24.         if not self.begin:
  25.             print('提示:请先调用start()进行计时')
  26.         else:
  27.             self.end = self.default_timer()
  28.             self.__calc()
  29.             print('计时结束!')

  30.     #内部方法,计算运行时间
  31.     def __calc(self):
  32.         self.lasted = self.end - self.begin
  33.         self.prompt = '总共运行了%0.2f秒'%self.lasted
  34.         #为下一轮计时初始化变量
  35.         self.begin = 0
  36.         self.end = 0

  37.         #设置计时器(time.perf_counter()或time.process_time())
  38.         def set_timer(self,timer):
  39.             if timer == 'process_time':
  40.                 self.default_timer = t.process_time
  41.             elif timer == 'perf_counter':
  42.                 self.default_timer = t.perf_counter
  43.             else:
  44.                 print('输入无效,请输入 perf_counter或process_time')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-8-7 22:33:04 | 显示全部楼层
set_timer是用来选择计时器(t.process_time 或者 t.perf_counter),是从外部进行调用,使用的时间是计时开始之前,也就是调用 start()之前,

通过调用它来选择计时方式~

比如
  1. timer = Mytimer()
  2. timer.set_timer(process_time)#选择通过t.process_time计时
  3. timer.start()
  4. timer.stop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 07:47:04 | 显示全部楼层
MSK 发表于 2017-8-7 22:33
set_timer是用来选择计时器(t.process_time 或者 t.perf_counter),是从外部进行调用,使用的时间是计时开始 ...

可不可以详细说以下,就是说我要是使用set_timer还要给她加入参数perf_timer,process_time吗?
事实上,在检验时,不必管set_timer,只需要调用开始,结束t.start(),t.stop(),就可以实现计时功能。
既然没用,我就不知道这个是什么时候起的作用,而怎么调用的

                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 07:54:18 | 显示全部楼层
MSK 发表于 2017-8-7 22:33
set_timer是用来选择计时器(t.process_time 或者 t.perf_counter),是从外部进行调用,使用的时间是计时开始 ...

self.begin = self.default_timer()    #该语句是什么意思,是赋值还是调用, self.default_timer()这算个函数吗?那为什么_init_中赋值没加括号
我感觉这个地方也不是很明白,请指教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-8 08:25:48 | 显示全部楼层
亭ting 发表于 2017-8-8 07:47
可不可以详细说以下,就是说我要是使用set_timer还要给她加入参数perf_timer,process_time吗?
事实上, ...

需要传入参数perf_timer或者process_time,不调用它仍然可以运行是因为在init里self.default_timer = t.perf_counter 将perf_counter设为默认计时器,而set_timer()的作用也就是修改默认计时器(self.default_timer)

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-8 08:29:22 | 显示全部楼层
亭ting 发表于 2017-8-8 07:54
self.begin = self.default_timer()    #该语句是什么意思,是赋值还是调用, self.default_timer()这算 ...

self.default_timer本身就是一个函数,它等于perf_timer或者process_time
self.begin = self.default_timer()就是调用self.default_timer(),把返回值赋值给self.begin
__init__里面是赋值,加括号就是调用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 08:41:17 | 显示全部楼层
MSK 发表于 2017-8-8 08:29
self.default_timer本身就是一个函数,它等于perf_timer或者process_time
self.begin = self.default_ti ...

我看到这个语句self.default_timer = t.perf_counter,觉得不像函数,因为函数赋值感觉不像这样的。你的意思是self.default_timer()是内置函数,还是自己定义的,若是内置函数,也就是说我们计时用perf_timer或者process_time都是可以实现计时功能的,若是自己定义的函数,并没有看到在何处定义啊,只有set_time中对它赋值了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-22 21:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表