只有在使用逻辑处理器计数时,python multiprocess才会挂起.join

时间:2015-10-29 20:44:41

标签: python multiprocessing

我有一个相当简单的程序,我试图并行运行。当我使用4个进程运行它时,该程序工作。我的处理器是一个4核处理器,有8个逻辑核心。当我将进程数从4增加到5+时,程序将以增加的进程数运行,直到它到达.join()程序挂起...而如果我将它保持在4或更低,它永远不会挂起并完成正确。在产生更多进程而不是机器中的物理核心时,是否需要考虑不同的因素,我还没有想过?这是我在创建和运行流程时所做的一些示例代码。

import multiprocessing as mp

def f(list1, list2):
    #do something

if __name__ == '__main__':
    list1 = list()
    list2 = list()
    procs = list()

    num_cores = 4

    for i in xrange(0, num_cores):
        p = mp.Process(target=f, args=(list1, list2,))
        procs.append(p)

    for p in procs:
        p.start()

    for p in procs:
        p.join() # hangs here with num_cores over 4

0 个答案:

没有答案