def executeJob()

in SketchExperiment.py [0:0]


def executeJob(job):
    job.workload.prepare()
    job.oracle.prepare()
    
    print(f"Running {job.workload.getID()}, repetition {job.repetition}, on sketch {job.sketch_name} {str(job.sketch_kwargs)} ")
    
    query_iter = job.workload.genQueries() # XXX just workload
    q = next(query_iter)
    sketch = job.sketch_fun(seed=job.repetition, **job.sketch_kwargs)
    sketch.name = job.sketch_name
    results = ResultAccumulator(save_answers=job.options.save_answers)
    
    start_time = time.perf_counter()
    for i, x in enumerate(job.workload.genData()):
        sketch.add(x)
                                
        while q and i == q.data_idx:
            answer = sketch.query(q.query, q.parameters)
            error = job.oracle.eval_sketch_answer(q.qid, answer)
            truth = job.oracle.getAnswer(q.qid)
            results.addResult(
                    error=error, 
                    answer=answer, 
                    truth=truth,
                    query=q,
                    sketch=sketch,                     
                    workload=job.workload)
            q = next(query_iter, None)
    run_time = time.perf_counter() - start_time
    results.addTiming(run_time=run_time, sketch=sketch, workload=job.workload)
    return results