import sys
import random
schedulers = ["sim.setSchedulerActivityHeap()", "sim.setSchedulerCustom('schedulerH', 'SchedulerH')"]
scheds = {0: "activityHeap", 1: "heap"}
actives = range(0, 1000, 10)
sys.setrecursionlimit(10000)
sys.path.append("../../src/")
from simulator import Simulator
import time
iters = max(int(sys.argv[1]), 20)

def runFunc(param):
    schedulername, scheduler = param
    f = open("seq_activity_synthetic/" + str(scheds[schedulername]), 'w')
    for active in actives:
        from model import StaticModel
        total = 0.0
        for _ in range(iters):
            random.seed(1)
            model = StaticModel(1000, active)
            sim = Simulator(model)
            sim.setMessageCopy('none')
            exec(scheduler)
            sim.setTerminationTime(100)
            start = time.time()
            sim.simulate()
            del sim
            total += (time.time() - start)
        f.write("%s %s\n" % (active, total/iters))
        print("%s %s" % (active, total/iters))
    f.close()

map(runFunc, enumerate(schedulers))
"""
from multiprocessing import Pool
p = Pool(3)
p.map(runFunc, enumerate(schedulers))
"""
