Batching Pattern
Introduction
The Batching Pattern is used to group things into batches of N items each, and do something with those batches.
Problem
You have I items. You want to put them into N batches of M items each, with one batch containing fewer items than the others. You want to do something with these batches.
Solution
Using Iterators, this is trivial.
while there's more to do: start a new batch while there's more to do and the batch isn't full: pull an item off and put it in this batch. process this batch
or
while there's more to do: pull off up to M items process them
As a function this would take the following parameters:
- Iterable of items to batch
- Size of each batch
- A function to process a batch that takes an iterable of items.
This could be implemented in Python as:
from itertools import islice def batch(iterable, size, process_func): it = iter(iterable) try: while True: process_func(islice(it, size)) except StopIteration: pass