To print some information every 10 loop iterations can be a bit messy. Given the following, simple loop:

```for x in lots_of_stuff:
process(x)```

The "dumbest" way would be:

```i = 0
for x in lots_of_stuff:
process(x)
if i % 10 == 0:
print "Some progress info"
i += 1```

A more elegant solution would be to use the enumerate built-in:

```for i, x in enumerate(lots_of_stuff):
process(x)
if i % 20 == 0:
print "Some progress info"```

Much nicer, but this doesn't work with `while` loops, such as the following:

```while True:
process_something()```

In such cases, we would be back to "old", disturbingly-C-like way..

```i = 0
while 1:
process_something()
if i % 20 == 0:
print "Some progress info"
i += 1```

...unless we use.. generators \o/

First, we make a simple generator function:

```def alternator(num):
i = 0
while 1:
yield i % num == 0
i += 1```

Then set it up before the `while` loop, and use it:

```x = alternator(20)
while 1:
process_something()
if x.next():
print "Some progress info"```

Okay, it's not hugely neater, but at least the counting/modulo stuff is outside the loop.