I have a python script that takes as input ~20 arguments.
I want to run this script multiple times with different values for the arguments each time.
At the moment I use a basic bash script like the following (with more parameters and more different values for each parameter)
for com_adv_par18 in 0.288 0.289 do for com_adv_par19 in 0.288 0.289 do for com_adv_par20 in 0.288 0.289 do python alpha2.py $com_adv_par18 $com_adv_par19 $com_adv_par20 done done done
I am worrying though that this is not the most optimal way to do it. Both coding and computing time wise .
Could you propose any alternative method to insert the parameters and run the program more efficiently?
Thanks in advance.
The answer to your question depends on a lot of things – a significant factor is the length of time each execution takes.
If you can refactor the
alpha2.py script so that you can
import it, then you could use a python wrapper script along these lines:
from alpha2 import do_something from itertools import product # define argument lists here, e.g. list1 = [0.288, 0.289], etc. for args in product(list1, list2, list3): do_something(*args)
Each execution will still be sequential but the advantage of this approach is that you don’t suffer the overhead of loading a new python instance for every combination of parameters.
Answered By – Tom Fenech
Answer Checked By – Pedro (BugsFixing Volunteer)