Is there a way in Python to automatically add an iteration counter to a while loop?
I'd like to remove the lines count = 0
and count += 1
from the following code snippet but still be able to count the number of iterations and test against the boolean elapsed < timeout
:
import time
timeout = 60
start = time.time()
count = 0
while (time.time() - start) < timeout:
print 'Iteration Count: {0}'.format(count)
count += 1
time.sleep(1)
The cleanest way is probably to convert this to an infinite for
loop and move the loop test to the start of the body:
import itertools
for i in itertools.count():
if time.time() - start >= timeout:
break
...
You could instead move the while loop to a generator and use enumerate
:
import time
def iterate_until_timeout(timeout):
start = time.time()
while time.time() - start < timeout:
yield None
for i, _ in enumerate(iterate_until_timeout(10)):
print "Iteration Count: {0}".format(count)
time.sleep(1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With