[Python-Dev] release candidate rules and timeit API question (original) (raw)
Guido van Rossum guido@python.org
Tue, 01 Jul 2003 07:12:11 -0400
- Previous message: [Python-Dev] release candidate rules and timeit API question
- Next message: [Python-Dev] release candidate rules and timeit API question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tim> It's not so fine that this delicate code is duplicated, so I'd Tim> rather see an internal refactoring to use a common backoff-polling Tim> class.
I recently copied it to my own code as well. I'd like to see it whacked into something reusable. This seems to work: import time class Timeout(Exception): pass def awaitcondition(predicate, timeout): delay = 0.0005 endtime = time.time() + timeout while True: if predicate(): return remaining = endtime - time.time() if remaining <= 0: # time's up, predicate always failed raise Timeout delay = min(delay * 2, remaining, .05) time.sleep(delay) # reduce CPU usage by using a sleep Skip
I wonder if the right refactoring wouldn't be to add an acquire with timeout method to the built-in lock type?
--Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] release candidate rules and timeit API question
- Next message: [Python-Dev] release candidate rules and timeit API question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]