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

2024-10-04 03:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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以内。我如何使用workers来做到这一点呢?在

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

^{pr2}$

因此,我想启动process_result_in_a_way_that_can_be_parallelized并继续我的for循环。不要等到for循环结束,然后再进行多进程处理,那样会耗费更多的时间。在


Tags: answerinimportforreturn进程jobsmanager
1条回答
网友
1楼 · 发布于 2024-10-04 03:18:04

您不必将^{}^{}一起使用。您可以使用^{}按自己的计划向池提交作业。在

pool = multiprocessing.Pool(processes=3)
for i in range(30):
    pool.apply_async(worker, (i, return_dict))
pool.close()
pool.join()
print return_dict.values()

相关问题 更多 >