Run parallel jobs and save results to json.gz files.
Stable:
pip install ultrachronic
Latest:
pip install git+https://github.com/yoavram/ultrachronic.git
Supports Python>=3.4.
Requirements:
pip install nose click
Run:
nosetests tests
Code in do_something.py
:
from ultrachronic import jsonify_result, repeat
import click
@jsonify_result
def do_something(arg1, arg2):
a = 1
b = 2
# must return a dict!
return dict(a=a, b=b)
@click.command()
@click.option('--arg1', default=1, type=int, help='Argument 1')
@click.option('--arg2', default='a', type=str, help='Argument 2')
@click.option('--reps', default=1, type=click.IntRange(1, None), help='Number of repetitions')
@click.option('--cpus', default=1, type=int, help='Number of CPUs to use (<1 for all available)')
def main(arg1, arg2, reps, cpus):
repeat(do_something, reps, cpus, arg1=arg1, arg2=arg2)
if __name__ == '__main__':
main()
Usage:
python do_something.py
python do_something.py --reps 10 --cpus 2
python do_something.py --arg1 5 --reps 10 --cpus 1
python do_something.py --arg2 hi --reps 10 --cpus 0
- Yoav Ram (@yoavram)