在类中使用多重处理

在类中使用多重处理,第1张

在类中使用多重处理

我终于可以弄清楚如何

multiprocessing
在课堂上使用工作了。我使用
pathos.multiprocessing
并更改了代码,如下所示:

import numpy as npimport pathos.multiprocessing as multiprocessingclass LikelihoodTest:      def __init__(self,Xgal,Ygal):          self.x=Xgal          self.y=Ygal          self.objPosition=gal_pos          self.beta_s=beta          self.RhoCrit_SigmaC=rho_c_over_sigma_c          self.AngularDiameter=DA          self.RhoCrit=rho_crit          self.Reducedshear=observed_g          self.ShearError=g_err          #The 2D function      def like2d(self,posx, posy):          stuff=[self.objPosition, self.beta_s, self.RhoCrit_SigmaC , self.AngularDiameter, self.RhoCrit]          m=4.447e14          c=7.16          param=[posx, posy, m, c]          return reduced_shear( param, stuff, self.Reducedshear, self.ShearError)      def ShearLikelihood(self,r):          return [float(self.like2d(self.x[j],r)) for j in range(len(self.x))]      def run(self):          try:   print "processing to estimate likelihood in 2D grids......!!!"   start = time.time()   pool = multiprocessing.Pool(processes=10)   seq=[ self.y[i] for i in range( self.y.shape[0])]   results=np.array( pool.map(self.ShearLikelihood, seq ))   end = time.time()   print "process time:n",end - start   pool.close()          except ValueError:   print "Oops! value error ....!"          return results      def plotLikelihood(self,shared_array):          #plotting on a mesh the likelihood function in order to see whether you have defined the inputs correctly and you can observe the maximum likelihood in 2D          # Set up a regular grid of interpolation points          xi, yi = np.linspace(self.x.min(), self.x.max(), 100), np.linspace(self.y.min(), self.y.max(), 100)          # Interpolate          rbf = scipy.interpolate.interp2d(self.x, self.y,shared_array , kind='linear')          zi = rbf(xi, yi)          fig, ax = plt.subplots()          divider = make_axes_locatable(ax)          im = ax.imshow(zi, vmin=shared_array.min(), vmax=shared_array.max(), origin='lower',  extent=[self.x.min(), self.x.max(), self.y.min(),self.y.max()])          ax.set_xlabel(r"$Xpos$")          ax.set_ylabel(r"$Ypos$")          ax.xaxis.set_label_position('top')          ax.xaxis.set_tick_params(labeltop='on')          cax = divider.append_axes("right", size="5%", pad=0.05)          cbar = fig.colorbar(im,cax=cax, ticks=list(np.linspace(shared_array.max(), shared_array.min(),20)),format='$%.2f$')          cbar.ax.tick_params(labelsize=8)plt.savefig('/users/Desktop/MassRecons/Likelihood2d_XY_coordinate.pdf', transparent=True, bbox_inches='tight', pad_inches=0)          plt.close()if __name__ == '__main__':     Xgal = np.linspace(Xgalaxy.min(), Xgalaxy.max(), 1000)     Ygal = np.linspace(Ygalaxy.min(), Ygalaxy.max(), 1000)    Test=LikelihoodTest(Xgal,Ygal)      x=Test.run()     Test.plotLikelihood(x)

现在,它像魅力一样运作!:)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存