我有一个统计每一帧的计数器工作。我想要做的是按时间划分这个决定我的节目的FPS。但我不知道如何在蟒蛇内的定时功能进行操作。
我试着初始化时间
fps_time = time.time
fps_time = float(time.time)
fps_time = np.float(time.time)
fps_time = time()
然后计算帧,
FPS = (counter / fps_time)
FPS = float(counter / fps_time)
FPS = float(counter (fps_time))
但我发现了错误的对象不是可调用的或不支持的操作数/:“诠释”和“功能的buildin”
先谢谢您的帮助!
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
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()
希望能帮助到你!
你可能会想做些什么这个味道:
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估计也可能与报告更精确的FPS估计帮助后重新INITING START_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被称为每帧一次