def generate_stuff():
    for foo in range(100):
        yield foo

def process(moo):
    time.sleep(random.randint(0, 50) / 10.0)
return os.getpid()
pool = multiprocessing.Pool()
pids = pool.map(func=process, iterable=generate_stuff(), chunksize=1)
pool.close()
print(collections.Counter(pids))
Do multiprocessing pools give every process the same number of tasks, or are they assigned as available?