怎么在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 () >