-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_experiments_from_bash.py
68 lines (60 loc) · 2.01 KB
/
run_experiments_from_bash.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import os
import shutil
import argparse
import time
import signal
from main import main
class AlarmException(Exception):
pass
def alarmHandler(signum, frame):
raise AlarmException
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="...")
parser.add_argument('-d', dest='domain')
parser.add_argument('-p', dest='problem')
parser.add_argument('-g', dest='goals')
parser.add_argument('-q', dest='quality_bound', type=float, default=1.0)
parser.add_argument('-m', dest='metric', type=str)
args = parser.parse_args()
domain_name = args.domain.split('/')[-3]
problem_name = args.domain.split('/')[-2]
experiment_name = f'{domain_name}_{problem_name}_{args.metric}'
starting_path = os.getcwd()
try:
os.mkdir(f'{starting_path}/EXECUTION_{experiment_name}')
except:
os.system(f'rm -rf {starting_path}/EXECUTION_{experiment_name}')
os.mkdir(f'{starting_path}/EXECUTION_{experiment_name}')
os.chdir(f'{starting_path}/EXECUTION_{experiment_name}')
file_name = f"results_{domain_name}_{problem_name}_{args.metric}.log"
log = open(file_name, "a")
#log = open(f"results_{domain_name}_{problem_name}_{args.metric}.log", "a")
#import sys
#sys.stdout = log
# Perform computation
signal.signal(signal.SIGALRM, alarmHandler)
signal.alarm(900)
start_process = time.time()
try:
print(f'DOING {os.getcwd()}')
main(args, log)
log.write(f'Total running time {time.time() - start_process}\n')
log.flush()
log.close()
try:
os.system('rm -rf found_plans/')
except:
pass
#log.close()
#sys.stdout = sys.__stdout__
except:
log.write('FINISH DUE TO MEMORY OR TIME\n')
log.write(f'Total running time {time.time() - start_process}\n')
log.flush()
log.close()
try:
os.system('rm -rf found_plans/')
except:
pass
#log.close()
#sys.stdout = sys.__stdout__