我有一个函数,我想用不同的输入值调用 100 次。我有 8 个处理器,我希望同时运行 8 个作业,其中一个完成后启动另一个。但是,在我下面的脚本中,python 同时启动所有作业,需要更改什么?
global bits
bits = np.zeros(100)
def _multi(bits,idd,some_function):
bits[idd] = some_function(idd)
jobs = []
for i in range(100):
d = multiprocessing.Process(target=_multi,args=(bits,i,some_function))
jobs.append(d)
d.start()
for job in jobs:
job.join()
使用池来设置进程。
import multiprocessing as mp
import operator
import os
def process(func,arg):
pool = mp.Pool(processes=8)
results=[pool.apply_async(func, args=(arg,i)) for i in range(100)]
r=[]
for p in results:
try:
r.append(p.get())
except Exception:
print("error getting process: %s" % os.getpid())
return r