User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030714 Debian/1.4-2
Psymaster wrote:
while 1:
for event in pygame.event.get(QUIT):
sys.exit()
pygame.event.pump()
this is the part of your program that is burning cpu. this will get
the same cpu usage as something like
while 1:
a = 5
something like this will use 100% cpu in any programming language on
any platform. the program will use every available resource to
constantly run what is in the loop. the good news is pygame gives you
a few ways to scale back your program and use 0% of the cpu.
the first and easiest is usually used by simple games or test
programs. you simply call "pygame.time.wait(1)" somewhere in your
mainloop. on all platforms, the wait() function 'releases' the process
control back to the os kernel. a wait value of 1 in your loop will
drop the cpu down to about 2-5%. if you go all the way up to wait(5)
the program will definitely be under 1%. the wait method is simple,
but it doesn't get the cpu usage as low as it can go, and it doesn't
work well for games where framerate is important.
for programs that have no real animation there is a better way. this
is similar to the method used inside all GUI libraries. the trick is
that the program doesn't need to do anything until the user does
something with it. there is another 'wait' function in the event
module. "pygame.event.wait()". this will freeze your program until
there is some sort of event from the user or window system. using this
method the program really will take 0% of the cpu, unless the user is
interacting with the program. note that the MOUSEMOTION event can
happen very often when the user is moving the mouse. if you don't care
about the mouse movement you can block those messages and save even
more cpu time. your mainloop would look like this using the event.wait,
pygame.event.set_blocked(MOUSEMOTION)
while 1:
event = pygame.event.wait()
if event.type == QUIT:
sys.exit()
the other method involves using the pygame.time.Clock objects to help
limit the program framerate. this would be more useful in larger
games, but overkill for an image viewer.