2012-11-30 4 views
2

리눅스 머신에서 파이 게임을 사용하면 새 이미지를 계속로드하고 표시하면 프로그램 속도가 느려집니다.파이썬 pygame continuos 이미지로드 FPS

입력 이미지 (400x300)는 파일 크기를 일정하게 유지하기 위해 (360x) PPM 형식이므로 IO에 영향을 미치지 않고 압축 해제 지연을 피할 수 있습니다.

초당 50 프레임부터 시작하여 약 2 분 후 초당 약 25 프레임을 시작합니다.

import pygame  
pygame.init()  
clock = pygame.time.Clock() 
screen = pygame.display.set_mode((800, 600),pygame.FULLSCREEN) 
frame=1 

while 1: 

    image = pygame.image.load(str(frame)+".ppm")  

    screen.blit(image,(0,0)) 
    pygame.display.flip() 

    clock.tick(240) 

    frame=frame+1 
    if(frame%10==0): 
     print(clock.get_fps()) 

프레임 속도를보다 일관되게 유지하려면 어떻게해야합니까?

가비지 수집해야하는 이미지에 대한 이전 참조와 관련이있을 가능성이 큽니다. 아마.

새 개체를 만들고 가비지 수집기를 트리거하지 않고 시스템을 계속 느리게 실행하지 않고 이미지를 계속로드 할 수 있습니까?

+0

콘솔을 자주 인쇄하지 마십시오. 프레임 % 50 일 수 있습니다. 이는 성능에 영향을 줄 수 있습니다. – pmoleri

+0

@ pmoleri 그렇게하겠습니다.하지만 초당 5 번 출력되는 fps가 컴퓨터에 스트레스를주고 있는지 의심 스럽습니다. – zaf

+0

네가 맞습니다. 몇 개의 다른 프레임을로드하고 있습니까? 루핑 중이 니? 아마도 당신이 할 수있는 최적화가 있습니다. 또한 ppm 대신 bmp 형식을 사용하는 것이 어떻습니까? – pmoleri

답변

1

많은 숙고 끝에 마침내 문제가 무엇인지 알아 냈습니다. 어떤 이유로 컴퓨터는 이전 값 image을 기억하고 있어야합니다. 그 줄이 깜박 거리고 난 후에,

del image 

나는 완전히 모른다. 그러나 그것은 효과가있을 것이다.

+0

돌아와 줘서 고마워. 이미지 참조를 제거하는이 방법을 시도했지만 일정한 프레임 속도를 얻지 못했다고 생각합니다. 나는 더 깊게 가고 더 나은 결과를 얻지 만 여전히 계몽 된 방법을 찾고 있습니다. 나는 아무것도 찾으면 여기에 다시 올릴거야. – zaf