大家都知道,Python运行速度很慢,特别是在进行for循环的时候,这个劣势就更加明显了。为了解决这个问题,我们不得不来一个曲线救国的策略。
numpy,pytorch,这几个框架都是利用c写的,所以这几个框架运行速度很快。所以,我们可以利用这两个框架来间接的解决python速度慢的问题。我就直接拿我做的项目来说吧。
在我的一个项目中,我要处理图像,需要对每个像素点进行处理,所以最开始的想法就是来一个三次for循环,但是,最后是目的达到了,但是处理一张图像的速度在10s左右,难以接受,最终想到了解决方案,利用pytorch里面的gather函数来进行解决,torch.gather这个函数很有用,大家在处理图像的时候,如果速度慢,均可以考虑这个函数来处理,如果能处理,运行速度会非常快。
还有一个就是,我要将图片中[0,0,0]的像素改变为[0,255,0]这种,如果用for循环来处理,一样的,速度非常慢,但是如果用gather函数来处理,也无法处理,我最后再来一个折中方案,如下:
sum_image = torch.sum(torch.tensor(image), dim=2)
image0[sum_image == 0] = [0, 255, 0]
通过这种方式,解决了速度慢的问题。漂亮!
总之,为了解决python速度慢的问题,可以多多利用numpy和pytorch里面的接口。
2020.8.31