示例#1
0
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")
示例#2
0
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")
示例#3
0
 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
示例#4
0
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()}"
        )
示例#5
0
 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)
示例#6
0
 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])
示例#7
0
 def test_all(self):
     tasks = [Task.create("echo %d" % i) for i in range(10)]
     self.assertEqual(Task.all(), tasks)
示例#8
0
 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)
示例#9
0
 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)