返回顶部
首页 > 资讯 > 后端开发 > Python >Python Timer和TimerFPS计时工具类
  • 319
分享到

Python Timer和TimerFPS计时工具类

2024-04-02 19:04:59 319人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录Timer用法效果TimerFps用法效果以下工具类代码来自开源项目pyslam。 Timer import cv2   class Colors(object):     ''

以下工具类代码来自开源项目pyslam

Timer

import cv2
 
class Colors(object):
    '''
    Colors class:reset all colors with colors.reset; two  
    sub classes fg for foreground  
    and bg for background; use as colors.subclass.colorname. 
    i.e. colors.fg.red or colors.bg.greenalso, the generic bold, disable,  
    underline, reverse, strike through, 
    and invisible work with the main class i.e. colors.bold
    '''
    reset='\033[0m'
    bold='\033[01m'
    disable='\033[02m'
    underline='\033[04m'
    reverse='\033[07m'
    strikethrough='\033[09m'
    invisible='\033[08m'
    class fg: 
        black='\033[30m'
        red='\033[31m'
        green='\033[32m'
        orange='\033[33m'
        blue='\033[34m'
        purple='\033[35m'
        cyan='\033[36m'
        lightgrey='\033[37m'
        darkgrey='\033[90m'
        lightred='\033[91m'
        lightgreen='\033[92m'
        yellow='\033[93m'
        lightblue='\033[94m'
        pink='\033[95m'
        lightcyan='\033[96m'
    class bg: 
        black='\033[40m'
        red='\033[41m'
        green='\033[42m'
        orange='\033[43m'
        blue='\033[44m'
        purple='\033[45m'
        cyan='\033[46m'
        lightgrey='\033[47m'
 
class Printer(object):
    @staticmethod
    def red(*args, **kwargs):
        print(Colors.fg.red, *args, **kwargs)
        print(Colors.reset, end="")
 
    @staticmethod
    def green(*args, **kwargs):
        print(Colors.fg.green, *args, **kwargs)
        print(Colors.reset, end="")
 
    @staticmethod
    def blue(*args, **kwargs):
        print(Colors.fg.blue, *args, **kwargs)
        print(Colors.reset, end="")        
        
    @staticmethod
    def cyan(*args, **kwargs):
        print(Colors.fg.cyan, *args, **kwargs)
        print(Colors.reset, end="")             
        
    @staticmethod
    def orange(*args, **kwargs):
        print(Colors.fg.orange, *args, **kwargs)
        print(Colors.reset, end="")     
        
    @staticmethod
    def purple(*args, **kwargs):
        print(Colors.fg.purple, *args, **kwargs)
        print(Colors.reset, end="")  
        
    @staticmethod
    def yellow(*args, **kwargs):
        print(Colors.fg.yellow, *args, **kwargs)
        print(Colors.reset, end="")                                   
 
    @staticmethod
    def error(*args, **kwargs):
        print(Colors.fg.red, *args, **kwargs, file=sys.stderr)
        print(Colors.reset, end="")        
 
 
 
#timer_print = print 
timer_print = Printer.cyan 
 
class Timer: 
    def __init__(self, name = '', is_verbose = False):
        self._name = name 
        self._is_verbose = is_verbose
        self._is_paused = False 
        self._start_time = None 
        self._accumulated = 0 
        self._elapsed = 0         
        self.start()
 
    def start(self):
        self._accumulated = 0         
        self._start_time = cv2.getTickCount()
 
    def pause(self): 
        now_time = cv2.getTickCount()
        self._accumulated += (now_time - self._start_time)/cv2.getTickFrequency() 
        self._is_paused = True   
 
    def resume(self): 
        if self._is_paused: # considered only if paused 
            self._start_time = cv2.getTickCount()
            self._is_paused = False                      
 
    def elapsed(self):
        if self._is_paused:
            self._elapsed = self._accumulated
        else:
            now = cv2.getTickCount()
            self._elapsed = self._accumulated + (now - self._start_time)/cv2.getTickFrequency()        
        if self._is_verbose is True:      
            name =  self._name
            if self._is_paused:
                name += ' [paused]'
            message = 'Timer::' + name + ' - elapsed: ' + str(self._elapsed) 
            timer_print(message)
        return self._elapsed                

用法

import Timer
timer = Timer(is_verbose=True)
timer.start()
 
# 此处是你的代码
 
timer.elapsed()

效果

TimerFps

在上面的基础上,再加上下面代码段:

import os
import numpy as np
import cv2
import math 
 
class MovingAverage:
    def __init__(self, average_width = 10, compute_sigma = False):    
        self._average_width = average_width
        self._idx_ring = 0
        self._average = 0
        self._sigma2 = 0
        self._is_init = False 
        self._is_compute_sigma = compute_sigma
        self._one_over_average_width_min_one = 1./(average_width-1)
        self._ring_buffer = np.zeros(average_width)
 
    def init(self, initVal=None):
        if initVal is None:
            initVal = 0. 
        self._ring_buffer = np.full(self._average_width, initVal, dtype=np.float32)        
        self._average    = initVal;    
        self._sigma2    = 0;
        self._is_init    = True;        
 
    def getAverage(self, new_val=None):
        if not self._is_init: 
            self.init(new_val)
        if new_val is None:
            return self._average            
        averageOld    = self._average
        oldVal        = self._ring_buffer[self._idx_ring]
        self._average += (new_val - oldVal)/self._average_width
        if self._is_compute_sigma:
            self._sigma2    =  self._sigma2 + self._one_over_average_width_min_one*(self._average_width*(averageOld*averageOld - self._average*self._average) - oldVal*oldVal + newVal*newVal)
        self._ring_buffer[self._idx_ring]    = new_val
        self._idx_ring = (self._idx_ring + 1) % self._average_width
        return self._average
 
    def getSigma(self):
        return  math.sqrt(max(self._sigma2,0.))       
 
 
class TimerFps(Timer):
    def __init__(self, name='', average_width = 10, is_verbose = True): 
        super().__init__(name, is_verbose)   
        self.moving_average = MovingAverage(average_width)
 
    def refresh(self): 
        elapsed = self.elapsed()
        self.moving_average.getAverage(elapsed)
        self.start()
        if self._is_verbose is True:
            dT = self.moving_average.getAverage()
            name =  self._name
            if self._is_paused:
                name += ' [paused]'            
            message = 'Timer::' + name + ' - fps: ' + str(1./dT) + ', T: ' + str(dT)
            timer_print(message)

用法

import TimerFps
timer = TimerFps(name='')
timer.start()
 
# 这里是你的代码
 
timer.refresh()

效果

到此这篇关于python Timer和TimerFPS计时工具类的文章就介绍到这了,更多相关Python 计时工具类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python Timer和TimerFPS计时工具类

本文链接: https://lsjlt.com/news/142867.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python Timer和TimerFPS计时工具类
    目录Timer用法效果TimerFps用法效果以下工具类代码来自开源项目pyslam。 Timer import cv2   class Colors(object):     ''...
    99+
    2024-04-02
  • Java Timer与TimerTask类使程序计时执行
    Java 程序设计 Timer&TimerTask类 Timer&TimerTask类 根据设定的时间安排实现程序任务的自动执行 每一个调度任务类都需要继承java....
    99+
    2024-04-02
  • 基于Python实现倒计时工具
    基于Python编写的倒计时工具,供大家参考,具体内容如下 特点: 实时显示当前时间自动判断用户输入日期,计算当前日期与目标日期相差大概多少年、月、日以及准确的相差天数 运行窗口 运...
    99+
    2024-04-02
  • C#四种计时器Timer的区别和用法
    1、System.Threading.Timer 线程计时器 1、最底层、轻量级的计时器。基于线程池实现的,工作在辅助线程。 2、它并不是内在线程安全的,并且使用起来比其他计时器更麻...
    99+
    2024-04-02
  • 怎么用Java Timer与TimerTask类使程序计时执行
    这篇文章主要介绍“怎么用Java Timer与TimerTask类使程序计时执行”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Java Timer与TimerTask类使程...
    99+
    2023-06-29
  • Android 定时执行工具类
    类名为MyTimeTask的工具类: import java.util.Timer; import java.util.TimerTask; p...
    99+
    2022-06-06
    工具类 工具 Android
  • python基于tkinter制作下班倒计时工具
    你有过摸鱼时间吗 在互联网圈子里,常常说996上班制,但是也不乏965的,更甚有007的,而007则就有点ICU的感觉了,所以,大家都会忙里偷闲,偶尔摸摸鱼,摸鱼的方式多种多样的,你有过上班摸鱼吗?你的摸鱼时间都干...
    99+
    2022-06-02
    python tkinter python 倒计时
  • 如何实现React Native验证码倒计时工具类
    小编给大家分享一下如何实现React Native验证码倒计时工具类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!示例 exp...
    99+
    2024-04-02
  • Java计时器工具StopWatch的具体使用
    目录前言Spring StopWatch实践例子源码分析lang3 StopWatch总结前言 平常,我们想要统计某一段代码块,或某一个方法的执行时间,最简单的是采用如下的方式。 ...
    99+
    2024-04-02
  • python 日志模块工具类
    #!/usr/bin/env python # -*- coding: utf-8 -*- import logging # logName 日志中的某个格式化的字段名,logFile生成的日志文件名 def getlogger(...
    99+
    2023-01-30
    模块 工具 日志
  • vue日期时间工具类详解
    最近做的一个项目对日期时间的处理比较多,最后整理到一个工具类里面,方便以后使用: 1. 在utils文件夹下新建一个dateTimeUtil.js文件: // 获取当前时间并格式化 ...
    99+
    2024-04-02
  • Java如何编写超时工具类
    这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • 【JAVA高级】——吃透JDBC中的封装工具类、ORM和Date工具类
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者成长之路 ...
    99+
    2023-08-31
    数据库 java mysql
  • Flutter 学习 之 时间转换工具类
    Flutter 学习之时间转换工具类 在 Flutter 应用程序开发中,处理时间戳是非常常见的需求。我们通常需要将时间戳转换为人类可读的日期时间格式。为了实现这一点,我们可以创建一个时间转换工具类。...
    99+
    2023-09-01
    学习 flutter android 经验分享 笔记
  • Java中的时间工具类有哪些
    Java中的时间工具类有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:package org.zhy.date;import java.text.DateForm...
    99+
    2023-05-31
    java ava
  • java DateUtil工具类时间戳类型转换详解
    本文实例为大家分享了DateUtil工具类时间戳类型转换的具体代码,供大家参考,具体内容如下package com.sinosoft.media.sms.util; import java.text.ParseException; impo...
    99+
    2023-05-30
    java dateutil dat
  • java 如何计算同比增长工具类
    java 计算同比增长工具类 为了数据的严谨性,统一装换为BigDecimal,话不多说,看代码。 package com.pig4cloud.pigx.admin.api.ut...
    99+
    2024-04-02
  • java怎么计算同比增长工具类
    本篇内容主要讲解“java怎么计算同比增长工具类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么计算同比增长工具类”吧!java 计算同比增长工具类为了数据的严谨性,统一装换为BigD...
    99+
    2023-06-20
  • 实时数据分析必备工具:Python、Numpy 和 Linux。
    数据分析是现代商业的重要组成部分。对于企业而言,数据分析可以帮助企业更好地了解客户、预测市场趋势、提高效率等。而在实时数据分析方面,Python、Numpy 和 Linux 是必不可少的工具。 Python 是一种高级编程语言,它被广泛用...
    99+
    2023-10-29
    linux numpy 实时
  • Python+Tkinter打造签名设计工具
    目录1.概述2.网页分析1)网页缺陷2)页面分析3)数据的获取3.完整代码4.总结1.概述 前面我们已经详细的介绍了,怎么使用Tkinter创建属于自己的窗口界面了。整体布局呢我们已...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作