如何设置多处理中的最大并发工作数?

时间:2018-05-11 08:19:10

标签: python multiprocessing

假设我们从vartec的answer开始,它展示了如何使用多处理工作者:

import multiprocessing

def worker(procnum, return_dict):
    '''worker function'''
    print str(procnum) + ' represent!'
    return_dict[procnum] = procnum


if __name__ == '__main__':
    manager = multiprocessing.Manager()
    return_dict = manager.dict()
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,return_dict))
        jobs.append(p)
        p.start()

    for proc in jobs:
        proc.join()
    print return_dict.values()

我想做同样的事情,只是将并发进程的数量限制为X.我怎样才能使用worker?

使用pool / map并不是最好的选择,因为我有这样的for循环:

for item in items:
    result = heavy_lifting_which_cannot_be_parallelized(item)
    process_result_in_a_way_that_can_be_parallelized(result)

因此,我想开始process_result_in_a_way_that_can_be_parallelized并继续我的for循环。不要等到for循环结束,然后再进行多进程 - 这将耗费更多时间。

0 个答案:

没有答案