import os
import sys
from threading import Thread
from time import sleep # not ideal - better would use task finish to launch additional tasks
RUN=1
today = '0721_batch_weak'
tasks = []
in_vitro_string = 'python3.9 dep_fun.py %s_%s GABARUN=1 idel=5000 idur=2000 GRAPH=0 iamp=-20e-3 GRAPH=0' % ('invitro',today)
basic_string = 'python3.9 dep_fun.py %s GABARUN=1 idel=2000 idur=12000 iamp=0 GRAPH=0 gabaamp=5e-3 fon=100 foff=100 NMDAFUNC=1 nmdaamp=4e-5 rtype=nexp won=100 woff=5900 UNIFORM=1' % today
array_string = 'python3.9 dep_fun.py %s_%s ARRAY=1 idel=5000 idur=2000 GRAPH=0 iamp=-20e-3 GRAPH=0' % ('array',today)
nruns = 100
#system('%s %s' % (basic_string,'number=10 regamp=0.05 kchip=0.56 fchip=0.44 freq=25'))
#system('%s %s' % (basic_string,'number=10 regamp=0.05 kchip=0.22 fchip=0.78 freq=25'))
"""
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (in_vitro_string,'kchip=0.56 fchip=0.44',0,0,4))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (in_vitro_string,'kchip=0.22 fchip=0.78',0,0,5))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (array_string,'kchip=0.56 fchip=0.44',0,0,4))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (array_string,'kchip=0.22 fchip=0.78',0,0,5))
#"""
for i in range(nruns):
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=1 regamp=0.05 kchip=0.56 fchip=0.44 freq=100',i,i,0))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=1 regamp=0.05 kchip=0.22 fchip=0.78 freq=100',i,i,1))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=20 regamp=0.05 kchip=0.56 fchip=0.44 freq=100',i,i,2))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=20 regamp=0.05 kchip=0.22 fchip=0.78 freq=100',i,i,3))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=5 regamp=0.05 kchip=0.56 fchip=0.44 freq=100',i,i,4))
tasks.append('%s %s control=%d custom_name=%.2f_%.2f' % (basic_string,'number=5 regamp=0.05 kchip=0.22 fchip=0.78 freq=100',i,i,5))
MAX=100 # limited by memory, diminishing returns over ncores
#quit()
if RUN: # if 0, can diagnose what scripts it *thinks* will run
ACTIVE=0
if len(tasks) == 1:
os.system('%s' % tasks[0])
else :
active=[]
for things in tasks:
if ACTIVE >= MAX:
ACTIVE=0
#print(things)
while any(x.is_alive() for x in active): # check if threads are running every now and then
sleep(5)
t = Thread(target=os.system,args=(str(things),))
t.start()
active=[t]
ACTIVE+=1
else:
#print(things)
#quit()
t = Thread(target=os.system,args=(str(things),))
t.start()
active.append(t)
ACTIVE+=1