I have a fairly straightforward nested for loop that iterates over four arrays:
for a in a_grid:
for b in b_grid:
for c in c_grid:
for d in d_grid:
do_some_stuff(a,b,c,d) # perform calculations and write to file
Maybe this isn't the most efficient way to perform calculations over a 4D grid to begin with. I know joblib
is capable of parallelizing two nested for loops like this, but I'm having trouble generalizing it to four nested loops. Any ideas?
I usually use code of this form:
If you use a tool that makes it easy to parallelize two nested loops, but not four, you can use
itertools.product
to reduce four nestedfor
loops into two:The number of jobs is not related to the number of nested loops. In that other answer, it happened to be
n_jobs=2
and 2 loops, but the two are completely unrelated.Think of it this way: You have a bunch of function calls to make; in your case (unrolling the loops):
and you want to distribute those function calls across some number of jobs. You could use 2 jobs, or 10, or 100, it doesn't matter.
Parallel
takes care of distributing the work for you.