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