我有一個(gè)可以并行運(yùn)行的函數(shù),但是,當(dāng)我嘗試運(yùn)行它時(shí),似乎正在串行調(diào)用該函數(shù)。import multiprocessing as mpdef function_to_be_parallelized(x,y,z): #compute_array takes 1-5 minutes computation to depending on x,y,z computed_array=compute_array(x,y,z) print ("running with parameters"+str(x*y*z)) return computed_arraydef run(xs,ys,zs): pool = mp.Pool(processes=4) all_outputs = [pool.apply(function_to_be_parallelized, args=(x,y,z)) for x in xs for y in ys for z in zs]我發(fā)現(xiàn)打印語句一次打印一個(gè),并且只有在前一個(gè)過程完成后才打印每個(gè)語句,我在具有 4 個(gè)內(nèi)核的機(jī)器上運(yùn)行它。這是因?yàn)閮?nèi)部函數(shù)中的進(jìn)程每個(gè)都占用了 2 個(gè)以上的內(nèi)核(因此無法并行化)?還是另有原因?
添加回答
舉報(bào)
0/150
提交
取消