[python-win32] Win32 equivalent of VB doevents() or just use time.sleep()?

Tim Roberts timr at probo.com
Sat Nov 6 01:14:42 CET 2010


python at bdurham.com wrote:
> We have a bunch of command line utilities that use all the CPU
> capacity available to them. Our customer has asked us to find ways we
> might make these utilities more system friendly by occassionally
> calling what they refered to as a win32 equivalent of VB's (Visual
> Basic) doevents() function.
>  
> I googled this topic and found a Mark Hammond suggestion with
> qualifications[1]:
>  
> win32gui.Pump(Waiting)Messages
>  
> Is there a recommended way to run our utilities in a more CPU friendly
> way?

Not if they are command-line utilities.  That UI only applies to
applications that have a message loop, and yours doesn't have one.

One alternative would be to reduce your processes priority:
   
http://code.activestate.com/recipes/496767-set-process-priority-in-windows/

Set yourself to BELOW_NORMAL_PRIORITY_CLASS and you'll be friendlier.

> I was thinking of calling time.sleep( P ) every N iterations through
> our processing but I'm not clear on the pros and cons of this
> technique vs. a strategy that proactively pumps waiting messages.

Yep, in a console application, that's exactly the right way.  Calling
time.sleep(0) will release the CPU if there is anyone else waiting.

-- 
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.



More information about the python-win32 mailing list