类似于多处理的mpi池
mpipool的Python项目详细描述
关于
mpipool
提供了一个类似的Pool
类multiprocessing.Pool
从标准库。
mpipool
使用MPIPool
实现
schwimmbad库
并规避其某些限制:
- 一系列的
mpipool.Pool.map
调用不会崩溃, - 如果工作进程引发异常,则MPI 任务被正确关闭,以便整个程序停止并执行 不是吊死。
示例用法
from mpipool import Pool
def add(a, b):
return a + b
p = Pool()
sums = p.map(add, [(ai, bi) for ai in range(10) for bi in range(10)])
assert len(sums) == 100
assert sums[0] == 0
assert sums[-1] == 18
sums = p.map(add, [(ai, bi) for ai in range(10) for bi in range(10)])
assert len(sums) == 100
assert sums[0] == 0
assert sums[-1] == 18
程序必须在命令行上运行,如:
$ mpirun -n 4 python example.py
目前mpipool.Pool
只实现一个map
方法。
与MPIPool
实现相反
schwimmbadfrom mpipool import Pool
之后的语句只执行
按排序为0
的任务。
学分
mpipool
使用MPIPool
实现
schwimmbad库。