I want to ask a pure Python question here, 
Suppose I want to run 40 processes, however I only have 20 cpu cores. I want to run the processes batch by batch. For example, the first batch run the 0-19 processes, after the first batch is done the second batch run the 20-39 processes. How to do this by MultiProcessing?
The logic is:
first_batch=[process_0 – process_19]
second_batch=[process_20 – process_39]
for p in first_batch:
p.start()
wait for the first_batch finish
for p in second_batch:
p.start()
wait for the second_batch finish
how to implemement wait for batch finish?
I have tried p.join() after the first batch, however join() puts all the processes to idle and the second batch never starts. Can anyone help me to debug?