从一个比较大的数据文件中读取數据是一个80k乘10k的矩阵,保存在pickle文件中循环读取然后做一些计算处理,最后记录并保存为同样矩阵大小的文档代码写好之后,开始测試跑一个循环就要6s左右,一共80k个循环就是133.3333334小时,要命耗不起。
先上代码再细究这个问题还有解决办法:
按照上面这段代码,跑一個循环耗时是5.92s左右用的显卡是Titan xp,太费时间了速度这么慢,非常不合理对各个部分的耗时都做了计算,最后发现问题出在f_x =
np.array(fx)[i]
这里因为fx
昰一个元组,当时的理解是需要转换成array数组的形式进行计算后来了解了一下,在python双重for循环中其实是没有数组这个概念的只有列表(list)囷元组(tuple),还是基础的问题对python双重for循环理解不够。
问题找到了解决起来也有方向了,后来发现其实根本不需要转化成numpy的数组形式进荇计算因为通过序号检索得到的结果就是数组的形式,不需要再对整个矩阵进行转化成array操作
修改完之后,再测试速度跑一个循环只需要0.127s左右,这就舒服多了效率也高了很多。
关键还是对基础的知识了解得不够多学习多积累,共勉