At 10:50 18/04/01 +0000, Mario Premke wrote: >Hi, I have a python application running under windows which takes >half of the CPU time when being idle. The idle main-loop does a >self.ProcessIdle ... Is it possible that this function consumes so >much CPU power ? There are no other processes in the background >and the application is definetely doing 'nothing' !! Idle loops may consume a lot of CPU time, specially if you don't cooperate with Windows. You have to use some (and preferably many) of the techniques below to make sure that your program does not burn all available CPU time running in circles: a) even if your application is very simple (its not a "true" windows application), it is a good idea to call pythoncom.PumpWaitingMessages() inside the busy loop. This call will give back control to Windows, giving the other applications a chance to run. In some programs of mine, I have some big files to read and process line-by-line. One time at every 1000 lines I make such a call. The program runs a bit slower, but the overall behavior of the OS is much better. It also makes it easier to debug, because it is easier for the debugger to interrupt into the running code (the debugger needs to get its events also :-) b) it your program does not use the Windows message queue, AND if you are explicitly waiting for input (for instance, reading a line character by character), you should call pythoncom.PumpWaitingMessages() inside the loop, at *every* iteration. c) in some cases, your application may "sleep" for a given period of time. There are some practical ways to make it: using the select call; using a timer; using the sleep call; etc. (i'm surre you can discover other ways to do the same). If you are waiting for some data to arrive on a file-like object, select is a nice way to make it. If you application is completely event-driven, a combination of the techniques above will spend *insignificant* time on the main loop. Carlos Ribeiro
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4