pool.map () не изменяет аргумент - PullRequest
       34

pool.map () не изменяет аргумент

0 голосов
/ 29 сентября 2019

У меня есть эта функция, которую я хочу распараллелить.

def sample_x(n, y, x, k_star, theta, psi, l, k, m, s, score):
    p, score[n, l] = calculate_score(theta, psi, n, l)
    x_nmk = np.random.multinomial(y[n, l], p / score[n, l])
    if (n, l, k) in x:
        if x[(n, l, k)] > 0:
            m[n, l] += x_nmk - x[(n, l, k)]
            s[l, k] += x_nmk - x[(n, l, k)]
            k_star[n, l] = k
            x[(n, l, k)] = x_nmk

Но все x, k_star, m, s не меняются, если я назову это, как показано ниже.

def sample_x_all(x, y, psi, theta, m, s, k_star, score, pool):
    k_star[:] = np.zeros((y.shape[0], y.shape[1]))
    for k in range(psi.shape[0]):
        for l in range(psi.shape[1]):
            pool_x = partial(sample_x, y=y, x=x, k_star=k_star, theta=theta, 
                             psi=psi, l=l, k=k, m=m, s=s, score=score)
            pool.map(pool_x, np.arange(theta.shape[0]))

Может кто-нибудь сказать мне, почему?Я также не хочу писать цикл for в конце и заполнять x ..

...