forked from shxr3f/PyHipp-23
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvlist.py
52 lines (44 loc) · 1.14 KB
/
envlist.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
#!/data/miniconda3/envs/env1/bin/python
from filelock import FileLock
import hickle
import sys
# set constants
file_path = "/data/picasso/envlist.hkl"
lock_path = "/data/picasso/envlist.khl.lock"
time_out_secs = 60
# program modes
READ_MODE = 0
WRITE_MODE = 1
RESET_MODE = 2
# get number of arguments
nargs = len(sys.argv)
if nargs > 3:
print('Usage: envlist; envlist env; envlist envprefix nenvs')
exit
elif nargs > 2:
pmode = RESET_MODE
envprefix = sys.argv[1]
nenvs = sys.argv[2]
elif nargs > 1:
pmode = WRITE_MODE
env = sys.argv[1]
else:
pmode = READ_MODE
lock = FileLock(lock_path, timeout=time_out_secs)
with lock:
if pmode == RESET_MODE:
clist1 = [*range(0,int(nenvs),1)]
clist = [envprefix + str(s) for s in clist1]
else:
# load hickle file
clist = hickle.load(file_path)
if pmode == WRITE_MODE:
# append item to end of list
clist.append(env)
else:
# pop first item off list
env = clist.pop(0)
# return env name
print(env)
# save hickle file
hickle.dump(clist, file_path, mode="w")