All jobs are executed before they are submitted, and none of them do more than write to an output stream. You submit the result of calling each lambda
.
Even if you used:
producersPool.submit(lambda i: print(i), (i,))
there is not enough in each thread to be preempted by another thread, so they all complete before any other thread can but in.