Python 并行,
因此,我想首先执行简单的线性回归,用从正态分布随机生成的10000000个据点(4个特征,1个目的变量)来评价串联计算和并行计算之间的性能差。在
这是我的代码。导入熊猫当警察局
将数组作为铭牌导入
导入随机
来自勺导入流程
将statsmodels.api作为钐导入
来自时间导入时间
defLinreg(vals):
全局模型
model=sm.ols(y_vals,X_vals).适合)
返回模型
打印(模型摘要) )
if __name__==__main__ :
随机种子(42岁)。
vals=PD。数据帧(NP。随机的。normal)loc=3,scale=100,size=(1000000,5))
vals.columns=[dep , ind1 , ind2 , ind3 , ind4]
y_vals=vals[dep]
X_vals=vals[[ind1 , ind2 , ind3 , ind4]]
bt=time())
model_vals=list(map(Linreg,[ 1,2,3 ])
mval=model_vals[0]
打印(mval.summary))
serial_time=time(-Bt
bt1=时间()
model _ vals _ 1=list(期货。map(Lin reg,[ 1,2,3 ])
mval_1=model_vals_1[0]
打印(mval _1 .摘要) )
parallel_time=time(-Bt1
打印(串行时间,并行时间).
但是,之后回归摘要确实是由计算机编程语言的标准映射函数串行生成的。这是错误的。跟踪后退(mostrecentcalllast):
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ lib rrib
主,修改规格)
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ lib rrib
执行(代码,run_globals))。
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
美因学院。
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
self.run()。
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
期货_启动()
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
run_name=main
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
结果=_ controller.switch(根未来、args、**kargs)。
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
提高未来.异常值值
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
未来。结果值=未来。可赎回(*未来。args,**future.kargs))。
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ lib rrib
pkg_name=pkg_name脚本_name=fname)
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ lib rrib
模块名称、模块规格、包名称、脚本名称)
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ lib rrib
执行(代码,run_globals))。
文件scoop _ map _ linear _ regression1 .py ,第33行,英寸
model _ vals _ 1=list(期货。map(Lin reg,[ 1,2,3 ])
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
对于将来的rein _ wait all(* futures):
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
forfin_waitany(未来) :
文件c:\ users \ NIC colo . gentile \ appdata \ local \ continuum \ anaconda 3 \ envs \ tensor environ \ lib sib
raiseschildfuture . exception值
名称错误:未定义名称 y _ vals
是后来做的。这意味着代码将停止在model _ vals _ 1=list(期货。map(Lin reg,[ 1,2,3 ])上。在
我也试着在地图上运行了两次那个,但是确实没有出现错误。在
也指定脚本已正确启动。
^{pr2}$
从蟒蛇提示符命令行。在
实际上,如果不使用-m scoop参数启动它,正如警告中所报告的那样,它只需要使用Python内置映射函数的两倍功能,而不是并行化它,而是实际运行它。也就是说,在启动时没有指定-m scoop参数,futures.map将被替换为一个map。在
我的目标是并行运行futures.map并评估性能改进。在
指定并保留以避免其他类似的回复。在
任何评论都是高度赞扬和欢迎的。在
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。