Diez B. Roggisch wrote:
> A while loop has a condition. period. The only thing to change that is
> to introduce a uncoditioned loop, and use self-modifying code to make it
> a while-loop after that timer interrupt of yours.
or use a timer interrupt to interrupt the loop:
import signal, time
def func1(timeout):
def callback(signum, frame):
raise EOFError # could use a custom exception instead
signal.signal(signal.SIGALRM, callback)
signal.alarm(timeout)
count = 0
try:
while 1:
count += 1
except EOFError:
for i in range(10):
count += 1
print count
for an utterly trivial task like the one in that example, the alarm
version runs about five times faster than a polling version, on my test
machine (ymmv):
def func2(timeout):
gettime = time.time
t_limit = gettime() + timeout
count = 0
while gettime() < t_limit:
count += 1
for i in range(10):
count += 1
print count
</F>
--
http://mail.python.org/mailman/listinfo/python-list