1import sys 2from mpi4py.futures import MPIPoolExecutor 3 4 5def main(): 6 def getarg(opt, default=None): 7 try: 8 return sys.argv[sys.argv.index('--'+opt)+1] 9 except ValueError: 10 return default 11 12 options = {} 13 if '--host' in sys.argv or '--port' in sys.argv: 14 service = (getarg('host'), getarg('port')) 15 else: 16 service = getarg('service') 17 if '--info' in sys.argv: 18 info = getarg('info').split(',') 19 info = dict(entry.split('=') for entry in info if entry) 20 else: 21 info = None 22 23 with MPIPoolExecutor(service=service, mpi_info=info) as executor: 24 fut1 = executor.submit(abs, +42) 25 fut2 = executor.submit(abs, -42) 26 assert fut1.result(0) == 42 27 assert fut2.result(0) == 42 28 29 30if __name__ == '__main__': 31 main() 32