我有一个相当简单的程序,我试图并行运行。当我使用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