メインで呼び出されたときに関数全体を並列化しようとしましたが、以下に表示される関数のセグメントは運が悪く、TypeError: function object is not iterable
.. 提案をいただければ幸いです。
from joblib import Parallel, delayed
num_cores = multiprocessing.cpu_count()
parallel = Parallel(n_jobs=num_cores)
from multiprocessing import Pool
p = Pool(4)
def kmean(layerW,cluster):
weights1d = np.reshape(layerW,-1)
print(np.shape(weights1d))
#Parallelizing Here
centroids,_ = parallel(delayed(kmeans(weights1d, cluster)))
idxs,_ = parallel(delayed(vq(weights1d,centroids)))
#Here, using Parallel
weights1d_q = parallel(delayed([centroids[idxs[i]] for i in range(len(weights1d))]))
#OR --- using pool instead
weights1d_q = p.map([centroids[idxs[i]] for i in range(len(weights1d))])
weights4d_q = np.reshape(weights1d_q, np.shape(layerW))
return weights4d_q