我希望能够得到帮助,了解我所做的事情以及为什么我的代码没有按照预期运行。
我开始使用joblib尝试通过并行运行(大)循环来加速我的代码。
我是这样使用它的:
from joblib import Parallel, delayed
def frame(indeces, image_pad, m):
XY_Patches = np.float32(image_pad[indeces[0]:indeces[0]+m, indeces[1]:indeces[1]+m, indeces[2]])
XZ_Patches = np.float32(image_pad[indeces[0]:indeces[0]+m, indeces[1], indeces[2]:indeces[2]+m])
YZ_Patches = np.float32(image_pad[indeces[0], indeces[1]:indeces[1]+m, indeces[2]:indeces[2]+m])
return XY_Patches, XZ_Patches, YZ_Patches
def Patch_triplanar_para(image_path, patch_size):
Image, Label, indeces = Sampling(image_path)
n = (patch_size -1)/2
m = patch_size
image_pad = np.pad(Image, pad_width=n, mode='constant', constant_values = 0)
A = Parallel(n_jobs= 1)(delayed(frame)(i, image_pad, m) for i in indeces)
A = np.array(A)
Label = np.float32(Label.reshape(len(Label), 1))
R, T, Y = np.hsplit(A, 3)
return R, T, Y, Label
我一直在尝试使用“n_jobs”来加快函数的速度。然而,随着n_jobs的增加,事情变得相当缓慢。当不使用“Parallel”运行此代码时,速度较慢,直到将作业数量从1增加。
为什么会这样?我以为运行的作业越多,脚本就会越快?我使用方法错误吗?
谢谢!