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技术站