import argparse
import os
import signac
def square(*jobs):
for job in jobs:
if job.isfile('square.out'):
continue
with open(job.fn('square.out.in_progress'), 'w') as file:
x = job.cached_statepoint['x']
file.write(f'{x**2}')
os.rename(job.fn('square.out.in_progress'), job.fn('square.out'))
def compute_sum(*jobs):
total = 0
for job in jobs:
with open(job.fn('square.out')) as file:
total += int(file.read())
print(total)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--action', required=True)
parser.add_argument('directories', nargs='+')
args = parser.parse_args()
project = signac.get_project()
jobs = [project.open_job(id=directory) for directory in args.directories]
globals()[args.action](*jobs)