π〽️❗: pi-line
A zero-dependency parallel script runner for Python.
Define units of work (Pi), execute them in parallel with a Runner, or feed them continuously through a Line.
Install
pip install pi-line
Quick start
Run scripts in parallel
from piline import Pi, Runner
pis = [
Pi(name="train", script="train.py", args=["--epochs", "10"]),
Pi(name="eval", script="eval.py"),
]
runner = Runner(max_workers=4)
results = runner.run(pis)
for r in results:
print(f"{r.pi_name}: {'PASS' if r.succeeded else 'FAIL'}")
Continuous feed with a Line
from piline import Pi, Runner, Line
runner = Runner(max_workers=4)
with Line(runner, max_results=5000) as line:
line.put(Pi(name="job1", script="job.py"))
line.put(Pi(name="job2", script="job.py"))
# look up a result by id
result = line.get(pi_id)
# flush results to external storage
batch = line.drain_results()
# line.stop() called automatically
Argument templates
Use {artefact_dir} and {task_dir} placeholders in args — they get resolved to the real paths before execution:
Pi(
name="train",
script="train.py",
args=["--output", "{artefact_dir}/model.pt"],
)
Concepts
- Pi — A unit of work. Wraps a script with args, env vars, and an optional timeout. Gets a unique ID on creation.
.pyfiles run with Python; anything else runs directly. - Result — Outcome of running a Pi. Exit code, timing, paths to stdout/stderr logs and artefacts.
- Runner — Executes a batch of Pi's in parallel using
ProcessPoolExecutor. - Line — Thread-safe queue that feeds Pi's to a Runner in batches. Results stored in a capped dict keyed by
pi_id. Supports context manager, per-Pi and per-batch callbacks, anddrain_results()for periodic flushing.
Output layout
.piline/runs/<pi_name>/<pi_id>/
stdout.log
stderr.log
artefact/
Environment variables
Scripts receive these env vars automatically:
PILINE_PI_ID— The Pi's unique IDPILINE_PI_NAME— The Pi's namePILINE_TASK_DIR— Path to the task directoryPILINE_ARTEFACT_DIR— Path to the artefact subdirectory
Callbacks
Line(
runner,
on_pi_complete=lambda r: print(f"Done: {r.pi_name} ({'PASS' if r.succeeded else 'FAIL'})"),
on_batch_complete=lambda results: print(f"Batch of {len(results)} finished"),
)
API reference
See docs/index.md.
Metadata
Release files for pi-line 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pi_line-1.1.0.tar.gz | 17.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pi_line-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.7 kB
Release files / pi_line-1.1.0.tar.gz
| Download URL | pi_line-1.1.0.tar.gz |
|---|---|
| Size | 17.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fb8eef03a12df7e4d891bdd03206880d72fa2b1ca8fbbcb59234878f99c6193
|
|
BLAKE2b-256 checksum How to use checksums |
4171213e55d1aa1443dce1d62c9afb8b0c3d872f6fa3fa1cfb0331263cf1daf4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 18, 2026.
Transparency logRelease files / pi_line-1.1.0-py3-none-any.whl
| Download URL | pi_line-1.1.0-py3-none-any.whl |
|---|---|
| Size | 14.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef59716e24275cf9e31483cc78609b4dc1559e35bfeb8eda2fecb9b39540c505
|
|
BLAKE2b-256 checksum How to use checksums |
416df51bfd2b96ba356546f1c7f4367db39b0d591e6db7ce76509164b3ef5920
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 18, 2026.
Transparency log