Skip to content

Class peagen.plugins.evaluators.pytest_monitor.PytestMonitorEvaluator

peagen.plugins.evaluators.pytest_monitor.PytestMonitorEvaluator

PytestMonitorEvaluator(metric='rss', inverse=True)

Bases: Evaluator

Evaluate resource usage using pytest-monitor.

Source code in peagen/plugins/evaluators/pytest_monitor.py
24
25
26
def __init__(self, metric: str = "rss", inverse: bool = True) -> None:
    self.metric = metric
    self.inverse = inverse

metric instance-attribute

metric = metric

inverse instance-attribute

inverse = inverse

last_result instance-attribute

last_result = None

run

run(workspace, bench_cmd, runs=1, **kw)
Source code in peagen/plugins/evaluators/pytest_monitor.py
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def run(self, workspace: Path, bench_cmd: str, runs: int = 1, **kw: Any) -> float:
    values = []
    for _ in range(runs):
        cmd = shlex.split(bench_cmd) + ["--json-report", "--db", ".pymon.sqlite"]
        subprocess.run(cmd, cwd=workspace, check=False, capture_output=True)
        metric = self._collect_metric(workspace / ".pymon.sqlite")
        (workspace / ".pymon.sqlite").unlink(missing_ok=True)
        values.append(metric)
    median_v = statistics.median(values)
    score = -median_v if self.inverse else median_v
    self.last_result = {
        "metric": self.metric,
        "runs": runs,
        "values": values,
        "median": median_v,
    }
    return score