程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了python中的多处理进程不稳定问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决python中的多处理进程不稳定问题?

开发过程中遇到python中的多处理进程不稳定问题的问题如何解决?下面主要结合日常开发的经验,给出你关于python中的多处理进程不稳定问题的解决方法建议,希望对你解决python中的多处理进程不稳定问题有所启发或帮助;

在处理大量数据的高维矩阵运算,我把它分成20个进程,我在我的实验室用linux系统运行它,但我发现不是每个循环都从20开始过程。 因为我打印了时间,发现每次循环的差别很大(应该是接近的),不知道为什么?

这是我的相关代码,它是一个类中的一些函数。

import numpy as np
import time

from scipy import sparse
from multiprocessing import Pool
from functools import partial

    def _computeTR(self,num_batch,data,W):
        n = data.shape[0]
        poolSize = self.poolSize  # 20
        batch = n // poolSize
        assert n % poolSize == 0
        compute_W = W[num_batch * batch:(num_batch + 1) * batch]
        compute_data = data[num_batch * batch:(num_batch + 1) * batch,...]

        T = 0
        R = 0
        for i in range(batch):
            B = compute_W[i]
            x = compute_data[i]
            s0 = B.T.dot(X)
            s0 = s0.reshape(self.D * self.Ks,1)
            s0 = sparse.csc_matrix(s0)
            T += (self.eta - 1) * s0 @ s0.T + B.T @ B
            R += self.eta * s0
        return T,R

    def multiprocessing_computeTR(self,W):
        p = Pool(self.poolSizE)
        a = p.map_async(partial(self._computeTR,data=data,W=W),range(self.poolSizE)).get()
        p.close()
        p.join()
        T = 0
        R = 0
        for i in range(self.poolSizE):
            T += a[i][0]
            R += a[i][1]
        return T,R
while iter_num < maxiter
    iter_num += 1
    time1 = time.time()
    Ts,Rs = self.multiprocessing_computeTR(data,self.W)
    time2 = time.time()
    print(time2 - time1)

输出:

49.9

885.9

719.7

587.7

259.9

这是出乎意料的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的python中的多处理进程不稳定问题全部内容,希望文章能够帮你解决python中的多处理进程不稳定问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。