import sys from caravan.server import Server from caravan.task import Task if len(sys.argv) != 2: sys.stderr.write("Usage: python <command_file_path>\n") raise RuntimeError("invalid number of arguments") with Server.start(): with open(sys.argv[1]) as f: for line in f: Task.create(line.rstrip()) sys.stderr.write("DONE\n")
if len(sys.argv) != 5 and len(sys.argv) != 6: sys.stderr.write(str(sys.argv)) sys.stderr.write("invalid number of argument\n") args = ["num_jobs", "alpha", "min", "max", "[num_stub_cpus]"] sys.stderr.write("Usage: python %s %s\n" % (__file__, " ".join(args))) raise RuntimeError("invalid number of arguments") if len(sys.argv) == 5: with Server.start(): se = PowerLawSleep(int(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4])) se.create_initial_runs() else: from caravan.server_stub import start_stub def stub_sim(t): t = float(t.command.split()[1]) results = (1.0, ) return results, t with start_stub(stub_sim, num_proc=int(sys.argv[5])): se = PowerLawSleep(int(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4])) se.create_initial_runs() if all([t.is_finished() for t in Task.all()]): sys.stderr.write("DONE\n") else: Tables.dump("table.pickle")
def _create_one(self): t = self._t() task = Task.create("sleep {t}".format(t=t)) if self.n < self.num_jobs: task.add_callback(lambda t: self._create_one() ) self.n += 1
import sys from caravan.server import Server from caravan.task import Task from caravan.server_stub import start_stub def stub_sim(task): t = 1 + task.id() % 3 return ({}, t) with start_stub(stub_sim, num_proc=4): tasks1 = [Task.create(f"sleep {1+i%3}") for i in range(5)] Server.await_all_tasks( tasks1) # this method blocks until all the tasks are finished print("all running tasks are complete!") for t in tasks1: print( f"task ID:{t.id()}, rc:{t.rc()}, rank:{t.rank()}, {t.start_at()}-{t.finish_at()}" )
def _create_one(self): t = random.uniform(self.sleep_range[0], self.sleep_range[1]) task = Task.create("sleep {t}".format(t=t)) self.task_count += 1 self.num_running += 1 task.add_callback(self._on_ps_finished)
def test_find(self): tasks = [Task.create("echo %d" % i) for i in range(10)] self.assertEqual(Task.find(5).id(), 5) self.assertEqual(Task.find(5), tasks[5])
def test_all(self): tasks = [Task.create("echo %d" % i) for i in range(10)] self.assertEqual(Task.all(), tasks)
def test_create(self): for i in range(10): t = Task.create("echo %d" % i) self.assertEqual(t.id(), i) self.assertEqual(t.is_finished(), False) self.assertEqual(len(Task.all()), 10)
def test_task(self): t = Task(1234, "echo hello world") self.assertEqual(t.id(), 1234) self.assertEqual(t.is_finished(), False) self.assertEqual(t.command(), "echo hello world") t._store_result([1.0, 2.0, 3.0], 0, 3, 111, 222) self.assertTrue(t.is_finished()) self.assertEqual(t.rc(), 0) self.assertEqual(t.rank(), 3) self.assertEqual(t.start_at(), 111) self.assertEqual(t.finish_at(), 222)