def test_generator_progbar_warning(): data = [] g = (s for s in grid(class_size=[5, 6], n_sim=[1000, 1_000_000])) with pytest.warns( UserWarning, match="Progress bar not supported for generator settings"): @memlist(data=data) def count_values(**kwargs): return {"sum": sum(kwargs.values())} runner = Runner(backend="threading", n_jobs=-1) runner.run(func=count_values, settings=g, progbar=True)
def test_grid(): inputs = [i for i in grid(a="abc", b="abcd")] assert len(inputs) == 12 assert all(["a" in i for i in inputs]) assert all(["b" in i for i in inputs])
from memo import Runner import numpy as np from memo import memlist, memfile, grid, time_taken data = [] @memfile(filepath="results.jsonl") @memlist(data=data) @time_taken() def birthday_experiment(class_size, n_sim): """Simulates the birthday paradox. Vectorized = Fast!""" sims = np.random.randint(1, 365 + 1, (n_sim, class_size)) sort_sims = np.sort(sims, axis=1) n_uniq = (sort_sims[:, 1:] != sort_sims[:, :-1]).sum(axis=1) + 1 proba = np.mean(n_uniq != class_size) return {"est_proba": proba} for setting in grid(class_size=range(20, 30), n_sim=[100, 10_000, 1_000_000]): birthday_experiment(**setting) # To Run in parallel settings = grid(class_size=range(20, 30), n_sim=[100, 10_000, 1_000_000], progbar=False) runner = Runner(backend="threading", n_jobs=-1) runner.run(func=birthday_experiment, settings=settings)