Is this the best general-purpose solution?
def batch(iteration, batchSize):
items = []
for item in iteration:
items.append(item)
if len(items) == batchSize:
yield items
items = []
if items:
yield items
...
for rows in batch(query.results(), N):
cluster.submit(rows)