Advanced Features: Async Evaluation and CLI
This section covers Cadence's advanced capabilities, including asynchronous evaluation of programs and the built-in command-line interface.
1. Asynchronous Evaluation
Cadence can leverage Python's asyncio to run multiple evaluations concurrently, reducing overall runtime for batch assessments.
import asyncio
from src.evaluator import Evaluator
from src.tasks.tsp_task import TSPTask
async def async_eval():
evaluator = Evaluator()
task = TSPTask(n_cities=8)
seeds = list(range(5))
# Run evaluations in parallel threads
results = await asyncio.gather(*[
asyncio.to_thread(evaluator.evaluate_code, task.baseline_program, task, [s])
for s in seeds
])
for i, res in enumerate(results):
print(f"Seed {i}: cost={res.cost:.2f}, feasible={res.feasible}")
asyncio.run(async_eval())
2. Command-Line Interface (CLI)
Cadence provides a simple CLI via main.py for running experiments without modifying code.
# Run a TSP evolution for 10 generations and save results
gitbash
python main.py --task tsp --generations 10 --output evolution_results.sqlite
CLI Options
--task: Task name (e.g.,tsp)--generations: Number of evolution generations--population: Population size per generation (default: 5)--output: Path to SQLite output database--seeds: Comma-separated random seeds for evaluation