我有以下代码在矩阵U的每一行上运行最小二乘法 .

import numpy as np
from numpy.linalg import norm,lstsq
from sklearn.externals.joblib import Parallel,delayed
k = 25
max_iter = 50
lmbda = 1e-3
R = np.random.randint(0,2,(1500,2500))
W = np.sign(R,dtype=np.int8)
rows, columns = R.shape
random = np.random.RandomState(seed=4)
U = np.zeros((rows,k),dtype=np.float32)
V = random.rand(columns,k).astype(np.float32)
D = random.rand(columns,k).astype(np.float32)
S = random.rand(columns,columns).astype(np.float32)
S = (S + S.T)/2
Ir = np.eye(k,dtype=np.int8)
for i in xrange(1,max_iter+1):
    U = Parallel(n_jobs=5)(delayed(lstsq)(np.dot(V.T,np.dot(np.diag(Wu),V))+lmbda*Ir, np.dot(R[u],np.dot(np.diag(Wu),V)),rcond=None) for u,Wu in enumerate(W))
    U = np.vstack([u[0] for u in U])
    V = Parallel(n_jobs=5)(delayed(lstsq)(np.dot(U.T,np.dot(np.diag(Wv),U))+np.dot(D.T,D), np.dot(S[v],D)+np.dot(R.T[v],np.dot(np.diag(Wv),U)),rcond=None) for v,Wv in enumerate(W.T))
    V = np.vstack([v[0] for v in V])

但无论我设置的n_jobs值是什么,我得到以下错误

local / lib / python2.7 / site-packages / sklearn / externals / joblib / externals / loky / process_executor.py:700:UserWarning:一名工作人员在向执行人员提供一些工作时停止了工作 . 这可能是由于工作超时太短或内存泄漏造成的 . “超时或内存泄漏 . ”,UserWarning

似乎确切的错误是由于在并行操作完成之前尝试运行的vstack函数引起的 . 但是对于大的n_jobs(= 15),即使是lstsq函数也会给出内存泄漏警告 . 我已经坚持了一个星期了 .