2from concurrent.futures
import ThreadPoolExecutor, as_completed
3from pathlib
import Path
7executable =
"./GAOneMax.exe"
8exe_args = [
"parameters.txt"]
13pad_width = len(str(n_runs))
16def run_instance(run_id: int):
17 log_name = f
"{log_prefix}_{run_id:0{pad_width}d}.txt"
19 with open(log_name,
"w")
as log_file:
20 result = subprocess.run(
21 [executable, *exe_args],
23 stderr=subprocess.STDOUT
25 return run_id, result.returncode
29 print(f
"Running {n_runs} runs with {n_procs} parallel instances")
31 with ThreadPoolExecutor(max_workers=n_procs)
as executor:
34 for run_id
in range(1, n_runs + 1):
35 futures.append(executor.submit(run_instance, run_id))
38 for future
in as_completed(futures):
39 run_id, rc = future.result()
40 print(f
"Run {run_id:0{pad_width}d} finished (code {rc})")
43if __name__ ==
"__main__":