python中的多处理同时运行所有作业

时间:2018-05-03 20:40:12

标签: python multiprocessing

我有一个函数,我想用不同的输入值调用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()

1 个答案:

答案 0 :(得分:0)

使用池来设置进程。

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
相关问题