본문 바로가기

fps 계산하는 Python 예제

webnautes 2024. 4. 21.
반응형

큐에서 값을 꺼내오는 것에 대한 fps를 계산하는 간단한 Python 예제입니다.

 

2024. 4. 18  최초작성



실행결과입니다. 20개의 값을 큐에서 꺼내오며 fps를 측정한 결과를 보여줍니다. 

 

큐에서 꺼낸 값 1, 경과시간 0.00 초, 지금까지 큐에서 꺼낸 개수 1개,   FPS: 322638.77

큐에서 꺼낸 값 2, 경과시간 1.01 초, 지금까지 큐에서 꺼낸 개수 2개,   FPS: 1.98

큐에서 꺼낸 값 3, 경과시간 2.02 초, 지금까지 큐에서 꺼낸 개수 3개,   FPS: 1.49

큐에서 꺼낸 값 4, 경과시간 3.03 초, 지금까지 큐에서 꺼낸 개수 4개,   FPS: 1.32

큐에서 꺼낸 값 5, 경과시간 4.04 초, 지금까지 큐에서 꺼낸 개수 5개,   FPS: 1.24

큐에서 꺼낸 값 6, 경과시간 5.06 초, 지금까지 큐에서 꺼낸 개수 6개,   FPS: 1.19

큐에서 꺼낸 값 7, 경과시간 6.08 초, 지금까지 큐에서 꺼낸 개수 7개,   FPS: 1.15

큐에서 꺼낸 값 8, 경과시간 7.08 초, 지금까지 큐에서 꺼낸 개수 8개,   FPS: 1.13

큐에서 꺼낸 값 9, 경과시간 8.10 초, 지금까지 큐에서 꺼낸 개수 9개,   FPS: 1.11

큐에서 꺼낸 값 10, 경과시간 9.11 초, 지금까지 큐에서 꺼낸 개수 10개,   FPS: 1.10

큐에서 꺼낸 값 11, 경과시간 10.12 초, 지금까지 큐에서 꺼낸 개수 11개,   FPS: 1.09

큐에서 꺼낸 값 12, 경과시간 11.13 초, 지금까지 큐에서 꺼낸 개수 12개,   FPS: 1.08

큐에서 꺼낸 값 13, 경과시간 12.14 초, 지금까지 큐에서 꺼낸 개수 13개,   FPS: 1.07

큐에서 꺼낸 값 14, 경과시간 13.15 초, 지금까지 큐에서 꺼낸 개수 14개,   FPS: 1.06

큐에서 꺼낸 값 15, 경과시간 14.16 초, 지금까지 큐에서 꺼낸 개수 15개,   FPS: 1.06

큐에서 꺼낸 값 16, 경과시간 15.17 초, 지금까지 큐에서 꺼낸 개수 16개,   FPS: 1.05

큐에서 꺼낸 값 17, 경과시간 16.18 초, 지금까지 큐에서 꺼낸 개수 17개,   FPS: 1.05

큐에서 꺼낸 값 18, 경과시간 17.20 초, 지금까지 큐에서 꺼낸 개수 18개,   FPS: 1.05

큐에서 꺼낸 값 19, 경과시간 18.21 초, 지금까지 큐에서 꺼낸 개수 19개,   FPS: 1.04

큐에서 꺼낸 값 20, 경과시간 19.22 초, 지금까지 큐에서 꺼낸 개수 20개,   FPS: 1.04

=== work 스레드 종료 ===

큐에서 꺼낸 전체 개수 20 개,  경과시간 20.24 초,  FPS 0.99




사용한 전체 코드입니다.

 

# fps 계산하는 예제코드
import time
import queue
import threading



# 주어진 수만큼 큐에 값을 넣습니다.
def work(num):

    global thread_work_alive
   
    i = num

    while i > 0:

        i = i - 1

        # 큐에 값을 넣습니다.
        # i는 감소하지만 증가되는 값을 큐에 넣도록 합니다.
        q.put(num-i)

        # 딜레이를 추가합니다.
        time.sleep(1)

    print('=== work 스레드 종료 ===')

    # 메인에서 work 스레드의 종료를 감지하도록 합니다.
    thread_work_alive = False


# 큐 생성
q = queue.Queue()

thread_work_alive = True

# 스레드를 시작합니다. work 스레드가 20개의 숫자를 큐에 넣도록 합니다.
thread_work = threading.Thread(target=work, args=(20,))
thread_work.start()



# 시작 시간
start_time = time.time()

# 큐에서 꺼낸 개수를 저장합니다.
count = 0

# work 스레드가 살아있는 동안 반복합니다.
while thread_work_alive:


    if not q.empty():  # 큐가 비어있을때에만 큐에서 꺼냅니다.
       
        count = count + 1

        # 큐에서 꺼냅니다.
        d = q.get()

        current_time = time.time()  # 현재 시간 측정
        elapsed_time = current_time - start_time  # 경과 시간 계산
       
        fps = count / elapsed_time  # FPS 계산

        print(f"큐에서 꺼낸 값 {count}, 경과시간 {elapsed_time:.2f} 초, 지금까지 큐에서 꺼낸 개수 {count}개,   FPS: {fps:.2f}")


# work 스레드 종료를 대기합니다.
thread_work.join()

# 최종 FPS 계산
final_time = time.time()
total_time = final_time - start_time
final_fps = count / total_time
print(f"큐에서 꺼낸 전체 개수 {count} 개,  경과시간 {total_time:.2f} 초,  FPS {final_fps:.2f}")




스레드 사용법은 아래 포스트를 참고하세요.

 

Python Thread 예제

https://webnautes.tistory.com/2138 

 

반응형

시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.

블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.



영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com


제가 쓴 책도 한번 검토해보세요 ^^

댓글