大佬教程收集整理的这篇文章主要介绍了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,请注明来意。