Python实现定时精度可调节的定时器


Posted in Python onApril 15, 2018

本文实例为大家分享了Python实现定时精度可调节的定时器,供大家参考,具体内容如下

# -* coding: utf-8 -*- 
 
import sys 
import os 
import getopt 
import threading 
import time 
 
def Usage(): 
  usage_str = '''''说明: 
  \t定时器 
  \timer.py -h 显示本帮助信息,也可以使用--help选项 
  \timer.py -d num 指定一个延时时间(以毫秒为单位) 
  \t          也可以使用--duration=num选项 
  ''' 
  print(usage_str) 
   
   
def args_proc(argv): 
  '''''处理命令行参数''' 
  try: 
    opts, args = getopt.getopt(sys.argv[1:], 'hd:', ['help', 'duration=']) 
  except getopt.GetoptError as err: 
    print('错误!请为脚本指定正确的命令行参数。\n') 
    Usage() 
    sys.exit(255) 
     
  if len(opts) < 1: 
    print('使用提示:缺少必须的参数。') 
    Usage() 
    sys.exit(255) 
     
  usr_argvs = {} 
  for op, value in opts: 
    if op in ('-h', '--help'): 
      Usage() 
      sys.exit(1) 
    elif op in ('-d', '--duration'): 
      if int(value) <= 0: 
        print('错误!指定的参数值%s无效。\n' % (value)) 
        Usage() 
        sys.exit(2) 
      else: 
        usr_argvs['-d'] = int(value) 
    else: 
      print('unhandled option') 
      sys.exit(3) 
 
  return usr_argvs 
   
def timer_proc(interval_in_millisecond): 
  loop_interval = 10   # 定时精度,也是循环间隔时间(毫秒),也是输出信息刷新间隔时间,它不能大于指定的最大延时时间,否则可能导致无任何输出 
  t = interval_in_millisecond / loop_interval 
  while t >= 0: 
    min = (t * loop_interval) / 1000 / 60 
    sec = (t * loop_interval) / 1000 % 60 
    millisecond = (t * loop_interval) % 1000 
    print('\rThe remaining time:%02d:%02d:%03d...' % ( min, sec, millisecond ), end = '\t\t') 
    time.sleep(loop_interval / 1000) 
    t -= 1 
  if millisecond != 0: 
    millisecond = 0 
    print('\rThe remaining time:%02d:%02d:%03d...' % ( min, sec, millisecond ), end = '\t\t') 
  print() 
   
# 应用程序入口 
if __name__ == '__main__': 
  usr_argvs = {} 
  usr_argvs = args_proc(sys.argv) 
  for argv in usr_argvs: 
    if argv in ( '-d', '--duration'): 
      timer_proc(usr_argvs[argv]) 
    else: 
      continue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
学习python的几条建议分享
Feb 10 Python
python抽象基类用法实例分析
Jun 04 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python实现控制COM口的示例
Jul 03 Python
python实现人机五子棋
Mar 25 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Python super()函数使用及多重继承
May 06 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
call在Python中改进数列的实例讲解
Dec 09 Python
Python编写一个优美的下载器
Apr 15 #Python
python实现音乐下载器
Apr 15 #Python
tensorflow 1.0用CNN进行图像分类
Apr 15 #Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 #Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 #Python
Pytorch入门之mnist分类实例
Apr 14 #Python
pytorch构建网络模型的4种方法
Apr 13 #Python
You might like
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
PHP加密解密类实例代码
2016/07/20 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python生成lmdb格式的文件实例
2018/11/08 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
python定义类的简单用法
2020/07/24 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
营销人才自我鉴定范文
2013/12/25 职场文书
财务管理专业求职信
2014/06/11 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
MySQL Server 层四个日志
2022/03/31 MySQL