Python Timer和TimerFPS计时工具类

Python Timer和TimerFPS计时工具类是Python中常用的计时工具,用于测量代码运行时间和帧率。

Python Timer

Python Timer是Python中内置的计时工具,通过time模块的time()函数和perf_counter()函数来实现。

  • time()函数返回从1970年1月1日至今的秒数,可用于计算整个程序的运行时间;
  • perf_counter()函数返回当前时间与计时器被初始化以来经过的秒数,可用于计算代码段的运行时间。

示例1:计算整个程序的运行时间

import time

start_time = time.time()  # 记录程序开始时间

# 代码段
for i in range(100000):
    pass

print("Time used:", time.time() - start_time, "s")  # 计算运行时间并打印出来

输出:

Time used: 0.007021427154541016 s

示例2:计算代码段的运行时间

import time

start_time = time.perf_counter()  # 记录代码段开始执行时的时间

# 代码段
for i in range(100000):
    pass

print("Time used:", time.perf_counter() - start_time, "s")  # 计算代码段的运行时间并打印出来

输出:

Time used: 0.00478785399999999 s

TimerFPS计时工具类

TimerFPS计时工具类是一个用于测量帧率的计时工具,它通过pygame的Clock类和time模块的perf_counter()函数来实现。

import pygame
import time

class TimerFPS:
    def __init__(self, screen):
        self.clock = pygame.time.Clock()
        self.screen = screen

    def start(self):
        self.last_tick = time.perf_counter()

    def tick(self):
        self.clock.tick()
        self.caption = "FPS: {:.2f}".format(self.clock.get_fps())
        pygame.display.set_caption(self.caption)

        current_tick = time.perf_counter()
        self.elapsed_time = current_tick - self.last_tick
        self.last_tick = current_tick

    def sleep(self, fps):
        frame_time = 1 / fps - self.elapsed_time
        if frame_time > 0:
            time.sleep(frame_time)
        else:
            print("Warning: FPS lower than expected!")

调用示例:

import pygame
from timerfps import TimerFPS

pygame.init()

screen = pygame.display.set_mode((640, 480))
timer = TimerFPS(screen)

while True:
    timer.start()

    # 代码段
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    timer.tick()
    timer.sleep(60)  # 限制帧率为60

在示例中,创建了一个名为timer的计时工具类实例,start()方法用于开始计时,tick()方法用于计算帧率并进行屏幕刷新,sleep()方法用于限制帧率。在代码段中,通过event.get()获取pygame的事件并进行处理。程序在运行时,通过使用 sleep() 方法,可以将 fps 限制在 目标 fps 值以内。如果计算得到的 fps 超过了目标 fps 值,则会休眠该计算得到的时间长短,以等待下一帧,以控制帧率。

通过使用TimerFPS,可以精确地测量帧率并控制程序的运行速度。

以上就是Python Timer和TimerFPS计时工具类的详细讲解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Timer和TimerFPS计时工具类 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python调试器中的所有变量都未定义

    【问题标题】:all variables are undefined in python debuggerpython调试器中的所有变量都未定义 【发布时间】:2023-04-03 06:54:01 【问题描述】: 我在 Python 3.6 上遇到了一个非常奇怪的问题。在我的代码中间,我调用import pdb; pdb.set_trace() 来调试一些…

    Python开发 2023年4月8日
    00
  • python是怎么被发明的

    Python是由Guido van Rossum在1989年圣诞节期间创造的。Guido van Rossum是著名的计算机程序员,他在ABC语言的基础上创造了Python。 ABC语言是一种类似Python的语言,但并没有成功地普及开来。Guido van Rossum是ABC语言的拥趸之一。他开始致力于把ABC语言改进成一个面向对象的、可扩展、非常易读的…

    python 2023年5月19日
    00
  • python实现人性化显示金额数字实例详解

    Python实现人性化显示金额数字实例详解 在很多的计算机应用场景中,需要对金额数字进行人性化的显示,比如货币、股票等金融领域。Python作为一种经典的开发语言,提供了非常方便的解决方案来实现金额数字的人性化显示。本文将介绍如何用Python实现人性化显示金额数字,以及提供一些示例说明。 实现思路 人性化金额数字的显示,需要满足以下几个条件: 数字需要进行…

    python 2023年6月3日
    00
  • Python 模块和类 – AttributeError:模块没有属性

    【问题标题】:Python Module and Class – AttributeError: module has no attributePython 模块和类 – AttributeError:模块没有属性 【发布时间】:2023-04-06 04:23:01 【问题描述】: 我是 python 新手,我正在尝试创建一个模块和类。 如果我尝试导入my…

    Python开发 2023年4月7日
    00
  • python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

    Python实现鸢尾花三种聚类算法(K-means, AGNES, DBScan) 1. 简介 聚类是一种无监督学习算法,它将相似的数据点分组到同一个簇中。本文将介绍如何使用Python实现三种聚类算法:K-means、AGNES和DBScan,并使用鸢尾花数据集进行演示。 2. 数据集 我们将使用鸢尾花数据集来演示如何使用聚类算法。该数据集包含150个样本…

    python 2023年5月14日
    00
  • 利用python获取想要搜索的数据

    获取想要搜索的数据是Python中常见的任务之一。Python提供了多种库和工具来实现数据获取,例如requests、BeautifulSoup、Selenium等。本文将详细讲解如何使用Python获取想要搜索的数据的完整攻略,包括使用requests和BeautifulSoup两个示例。 使用requests和BeautifulSoup获取想要搜索的数据…

    python 2023年5月15日
    00
  • Python3实现zip分卷压缩过程解析

    Python3实现zip分卷压缩过程解析 当你需要将大文件进行传输或存储的时候,一个常见的做法是将文件压缩为zip格式的分卷,这样可以方便地分成多个小文件进行处理。在Python3中,我们可以使用zipfile模块来实现这个过程。 1. 导入zipfile模块 在使用之前,需要先导入zipfile模块。可以使用以下代码: import zipfile 2. …

    python 2023年5月20日
    00
  • python 录制系统声音的示例

    当我们想要录制电脑系统声音时,需要借助Python中第三方库sounddevice和soundfile。sounddevice用于捕获系统声音,soundfile则用于将捕获到的声音流写入文件保存。 下面是录制系统声音的完整攻略: 安装依赖库 使用pip安装sounddevice和soundfile库: pip install sounddevice pip…

    python 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部