From d4c0eaae9cb8ba335760926cdccebdbbde9863c5 Mon Sep 17 00:00:00 2001 From: sp Date: Wed, 3 Jan 2024 19:39:29 +0100 Subject: [PATCH] testall now uses a threadpool --- testall.py | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/testall.py b/testall.py index 06a1204..78127d9 100644 --- a/testall.py +++ b/testall.py @@ -2,10 +2,11 @@ import os import subprocess +from concurrent.futures import ThreadPoolExecutor abs_path = os.getcwd() -slippery_configs=[f"{abs_path}/slippery_prob_075.yaml", +slippery_configs=[f"{abs_path}/slippery_prob_075.yaml", # f"{abs_path}/slippery_prob_08.yaml", f"{abs_path}/slippery_prob_085.yaml", # f"{abs_path}/slippery_prob_09.yaml", @@ -22,6 +23,7 @@ slippery_probs=[[0.25, 0.75], # 0.75 # [0.005,0.01, 0.99], # 0.99 #[0, 0, 1] # 1 ] +prob_turn_intended = 1 #shield_values = [0.85, 0.9, 0.95, 0.98, 0.99, 1] @@ -35,19 +37,40 @@ comps = ["relative", "absolute"] NUM_TIMESTEPS=250000 LOGDIR="../logresults/" -ENV="MiniGrid-LavaSlipperyS12-v2" +ENV="MiniGrid-LavaSlipperyCliffS12-v0" + +tasks = list() +NUM_WORKER=2 + +def run_command(command, logname): + log = open(f"{logname}.log", "w") + print(f"running {command}") + subprocess.call(command, shell=True, stdout=log)#.decode("utf-8").split('\n') + close(log) + # matrix for shielded runs for shield_value in shield_values: for sh_comp in comparison_type: for probs, config in prob_confs: - command = f"echo \"Running experiment with shielding full, sh_value:{probs[2]}, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\"" - execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} full {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {1}' - subprocess.call(execute_command, shell=True)#.decode("utf-8").split('\n') - + command = f"echo \"Running experiment with shielding full, sh_value:{shield_value}, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\"" + execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} full {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {prob_turn_intended}' + print(execute_command) + logname = f"shielded_comp_{sh_comp}_value_{shield_value}_probvalues{'_'.join(format(p, '10.3f') for p in probs)}_{config.split('/')[-1]}".replace(" ", "") + tasks.append((execute_command, logname)) + # loop for unshielded runs for probs, config in prob_confs: - command = f"echo \"Running experiment with shielding none, sh_value:{probs[2]}, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\"" - execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} none {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {1}' - subprocess.call(execute_command, shell=True)#.decode("utf-8").split('\n') - + command = f"echo \"Running experiment with shielding none, sh_value:0.0, sh_comp:{sh_comp}, probvalues:{probs}, config{config}\"" + execute_command = f'./syncscript.sh {NUM_TIMESTEPS} {LOGDIR} {"70"} {ENV} none {sh_comp} {config} {probs[0]} {probs[1]} {0} {shield_value} {prob_turn_intended}' + logname = f"unshielded_probvalues{'_'.join(format(p, '10.3f') for p in probs)}_{config.split('/')[-1]}".replace(" ", "") + print(execute_command) + tasks.append((execute_command, logname)) + +print(f"Going to execute {len(tasks)} with {NUM_WORKER} threads... press Enter to start") +input("") + +with ThreadPoolExecutor(max_workers=NUM_WORKER) as e: + for task in tasks: + print(f"submitted {task}") + e.submit(run_command, f"echo {task[0]}", task[1])