반응형

큐에서 값을 꺼내오는 것에 대한 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://toss.me/momo2024


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

+ Recent posts