def chunks(iterable, size, longest=True, fillwith=None):
iterable = iter(iterable)
while True:
ret = ()
try:
for x in xrange(size):
ret += (iterable.next(), )
except StopIteration:
if longest and ret:
while len(ret) < size:
ret += (fillwith, )
yield ret
return
yield ret