fps - 如何将计数除以时间函数以确定 fps
fps - how to divide count by time function to determine fps
我有一个计数器可以计算每一帧。我想做的是将其除以时间以确定我的程序的 FPS。但我不确定如何在 python.
内对计时函数执行操作
我试过将时间初始化为
fps_time = time.time
fps_time = float(time.time)
fps_time = np.float(time.time)
fps_time = time()
然后计算fps,
FPS = (counter / fps_time)
FPS = float(counter / fps_time)
FPS = float(counter (fps_time))
但我得到的错误是对象不可调用或 / 的操作数不受支持:'int' 和 'buildin functions'
在此先感谢您的帮助!
你可能想做点这样的事:
def program():
start_time = time.time() #record start time of program
frame_counter = 0
# random logic
for i in range(0, 100):
for j in range(0, 100):
# do stuff that renders a new frame
frame_counter += 1 # count frame
end_time = time.time() #record end time of program
fps = frame_counter / float(end_time - start_time)
当然你不必等到程序结束才计算end_time和fps,你可以时不时地在程序运行时报告 FPS。在报告当前 FPS 估计后重新启动 start_time 也有助于报告更精确的 FPS 估计。
这是一种非常简单的方法,可以在每一帧打印程序的帧速率(不需要计数器):
import time
while True:
start_time = time.time() # start time of the loop
########################
# your fancy code here #
########################
print("FPS: ", 1.0 / (time.time() - start_time)) # FPS = 1 / time to process loop
如果你想要平均帧速率超过x秒,你可以这样做(需要计数器) :
import time
start_time = time.time()
x = 1 # displays the frame rate every 1 second
counter = 0
while True:
########################
# your fancy code here #
########################
counter+=1
if (time.time() - start_time) > x :
print("FPS: ", counter / (time.time() - start_time))
counter = 0
start_time = time.time()
希望对您有所帮助!
很有魅力
import time
import collections
class FPS:
def __init__(self,avarageof=50):
self.frametimestamps = collections.deque(maxlen=avarageof)
def __call__(self):
self.frametimestamps.append(time.time())
if(len(self.frametimestamps) > 1):
return len(self.frametimestamps)/(self.frametimestamps[-1]-self.frametimestamps[0])
else:
return 0.0
fps = FPS()
for i in range(100):
time.sleep(0.1)
print(fps())
确保每帧调用一次 fps
我有一个计数器可以计算每一帧。我想做的是将其除以时间以确定我的程序的 FPS。但我不确定如何在 python.
内对计时函数执行操作我试过将时间初始化为
fps_time = time.time
fps_time = float(time.time)
fps_time = np.float(time.time)
fps_time = time()
然后计算fps,
FPS = (counter / fps_time)
FPS = float(counter / fps_time)
FPS = float(counter (fps_time))
但我得到的错误是对象不可调用或 / 的操作数不受支持:'int' 和 'buildin functions'
在此先感谢您的帮助!
你可能想做点这样的事:
def program():
start_time = time.time() #record start time of program
frame_counter = 0
# random logic
for i in range(0, 100):
for j in range(0, 100):
# do stuff that renders a new frame
frame_counter += 1 # count frame
end_time = time.time() #record end time of program
fps = frame_counter / float(end_time - start_time)
当然你不必等到程序结束才计算end_time和fps,你可以时不时地在程序运行时报告 FPS。在报告当前 FPS 估计后重新启动 start_time 也有助于报告更精确的 FPS 估计。
这是一种非常简单的方法,可以在每一帧打印程序的帧速率(不需要计数器):
import time while True: start_time = time.time() # start time of the loop ######################## # your fancy code here # ######################## print("FPS: ", 1.0 / (time.time() - start_time)) # FPS = 1 / time to process loop
如果你想要平均帧速率超过x秒,你可以这样做(需要计数器) :
import time start_time = time.time() x = 1 # displays the frame rate every 1 second counter = 0 while True: ######################## # your fancy code here # ######################## counter+=1 if (time.time() - start_time) > x : print("FPS: ", counter / (time.time() - start_time)) counter = 0 start_time = time.time()
希望对您有所帮助!
很有魅力
import time
import collections
class FPS:
def __init__(self,avarageof=50):
self.frametimestamps = collections.deque(maxlen=avarageof)
def __call__(self):
self.frametimestamps.append(time.time())
if(len(self.frametimestamps) > 1):
return len(self.frametimestamps)/(self.frametimestamps[-1]-self.frametimestamps[0])
else:
return 0.0
fps = FPS()
for i in range(100):
time.sleep(0.1)
print(fps())
确保每帧调用一次 fps