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遍历数组的方法小结
Apr 30 Python
python列表的常用操作方法小结
May 21 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
python re模块的高级用法详解
Jun 06 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
详解python播放音频的三种方法
Sep 23 Python
python读文件的步骤
Oct 08 Python
Python assert关键字原理及实例解析
Dec 13 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
python 动态绘制爱心的示例
Sep 27 Python
Python timeit模块原理及使用方法
Oct 10 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
短波问题解答
2021/02/28 无线电
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php实现复制移动文件的方法
2015/07/29 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
jQuery技巧总结
2011/01/01 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Python操作串口的方法
2015/06/17 Python
分分钟入门python语言
2018/03/20 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
销售找工作求职信
2013/12/20 职场文书
料理师求职信
2014/01/30 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
小学清明节活动总结
2014/07/04 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
公务员政审个人总结
2015/02/12 职场文书
财务人员入职担保书
2015/09/22 职场文书
解决MySQL报“too many connections“错误
2022/04/19 MySQL