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分割和拼接字符串
Nov 01 Python
Python注释详解
Jun 01 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
python构建基础的爬虫教学
Dec 23 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
通过python连接Linux命令行代码实例
Feb 18 Python
基于python爬取有道翻译过程图解
Mar 31 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
使用Python封装excel操作指南
Jan 29 Python
基于Python 函数和方法的区别说明
Mar 24 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
php的一个登录的类 [推荐]
2007/03/16 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
python编程实现归并排序
2017/04/14 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
python调用java的jar包方法
2018/12/15 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
linux面试题参考答案(10)
2013/11/04 面试题
审核会计岗位职责
2013/11/08 职场文书
四个太阳教学反思
2014/02/01 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
预备党员转正意见
2015/06/01 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python
深入理解python协程
2021/06/15 Python
nginx实现动静分离的方法示例
2021/11/07 Servers