Quickstart

See examples/quickstart.py for a runnable example.

"""scitex-parallel quickstart: parallel run over a callable with tuple args."""

import time

import scitex_parallel


def add(x, y):
    return x + y


def main():
    # 1. Build args list — each tuple is one function call.
    args_list = [(i, i + 1) for i in range(8)]
    expected = [a + b for a, b in args_list]

    # 2. scitex_parallel.run — parallel execution returning a list of results.
    t0 = time.perf_counter()
    results = scitex_parallel.run(add, args_list, n_jobs=4, desc="parallel")
    elapsed = time.perf_counter() - t0
    print("results:", results)
    print(f"elapsed: {elapsed:.3f}s")
    assert results == expected

    # 3. n_jobs=1 acts as a serial fallback (deterministic order).
    serial = scitex_parallel.run(add, args_list, n_jobs=1, desc="serial")
    print("serial:", serial)
    assert serial == expected


if __name__ == "__main__":
    main()