import argparse
import os
import hoomd
import signac
def action_implementation(job, communicator):
def action(*jobs):
processes_per_directory = int(os.environ['ACTION_PROCESSES_PER_DIRECTORY'])
communicator = hoomd.communicator.Communicator(ranks_per_partition=processes_per_directory)
action_implementation(jobs[communicator.partition], communicator)
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)