Python一共有两种并行方式
1. 使用multiprocessing
第一种方式用于单个节点内部的并行,也就是说同时发起的进程数不能超过你单个机器CPU的线程数。
以下是第一种方式的并行程序:
python
import multiprocessing
import time
import os
import numpy as np
ncore=20
def run(core):
Your code
reture 0
if __name__ == '__main__':
print(time.strftime('%Y-%m-%d %H:%M:%S'))
param = np.arange(20)
p = multiprocessing.Pool(ncore)
p.map(run, param)
p.close()
p.join()
print(time.strftime('%Y-%m-%d %H:%M:%S'))
提交脚本直接:
bash
python your_job_name.py
2. 使用mpi4py
第二种方式用于跨节点的并行,可以发起成千上百个CPU的并行。
以下是第二中方式的并行程序:
python
from mpi4py import MPI
import time
import os
import numpy as np
ncore=20
def run(core):
Your code
reture 0
if __name__ == '__main__':
print(time.strftime('%Y-%m-%d %H:%M:%S'))
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
run(rank)
print(time.strftime('%Y-%m-%d %H:%M:%S'))
提交脚本需要用到mpi
bash
mpiexec -n cpu_number python your_job_name.py