怎么在python中使用dispy实现分布式计算

  介绍

怎么在python中使用dispy实现分布式计算?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

dispy,是用asyncoro实现的分布式并行计算框架。

<强>框架也是非常精简,只有4个组件,在其源码文件夹下可以找到:

dispy。py(客户)提供了两种方式创建“集群”:JobCluster当> #,这些在顶层导入的模块只能是这个py文件用   import 时间   import 套接字   import  numpy   import  datetime      #,这个是自定义函数,要在本模块中先实例化才能在计算节点函数中调用使用,   #,而本模块的其他地方可以直接调用使用   得到my_package.my_model  import  get_time       #,实例化自定义的函数,注意后面是没有括号的,否则就是直接调用得到返回值了   你=get_time.now      #,计算函数,dispy将这个函数和参数一并发送到服务器节点   #,如果函数有多个参数,需要包装程元组格式   def 计算(args):   ,n,数组=args  #,如果函数有多个参数,需要包装程元组格式   ,#看到没,计算需要的模块是在函数内导入的   ,import 时间,套接字   ,time . sleep (3)=,,host  socket.gethostname ()   ,#这个py文件中自定义函数,可以直接引用   ,总=my_sum(数组)   ,#这个现在是在其他模块中自定义的函数,需要在顶层先实例化才能引用   现在,now_time=()   ,return (主机,,n,,, now_time)      def 和(数组):   ,#自定义函数,需要的模块同样需要在函数内导入   ,import  numpy  as  np   ,return  np.sum(数组)      def  loadData ():   ,#自定义函数,生成测试数据   ,import  numpy  as  np=,,data  np.random.rand (20、20)=,data  [line  for  line 拷贝数据)   return 数据            if  __name__ ==, & # 39; __main__ # 39;:   ,import  dispy随机   ,#定义两个计算节点=,nodes  [& # 39; 192.168.8.143& # 39;,, & # 39; 192.168.138.128& # 39;】   ,#启动计算集群,和服务器通信,通信密钥是& # 39;秘密# 39;   ,# depends 为依赖函数=,,cluster  dispy.JobCluster(计算节点=节点,   ,,,,,秘密=& # 39;秘密# 39;取决于=[求和,现在])=,jobs  []=,,datas  loadData ()   ,for  n 拷贝范围(len(数据):   #,才能提交任务   时间=job 才能;cluster.submit ((n,数据[n]))   job.id 才能=n   jobs.append才能(工作)   ,# print (datetime.datetime.now ())   ,# cluster.wait(), #,等待所有任务完成后才接着往下执行   ,# print (datetime.datetime.now ())   ,for  job 拷贝工作:   主机,才能,n,,, t =,工作()   打印才能(& # 39;% s  executed  job  % s  at  % s  with  % s 总=% .2f  t=% & # 39;,   ,,,%,(主机,job.id,, job.start_time,, n,, t))   #,才能other  fields  of  & # 39;工作# 39;,that  may  be 有用:   #,才能print  job.stdout,, job.stderr,, job.exception,,   #,才能job.ip_addr,, job.start_time, job.end_time   ,#显示集群计算状态   之前,cluster.stats ()

怎么在python中使用dispy实现分布式计算