Python ComputeBandStats非常慢

Python ComputeBandStats非常慢,python,python-2.7,python-3.x,gdal,Python,Python 2.7,Python 3.x,Gdal,当我尝试使用ComputeBandStats时,需要非常长的时间才能完成。有没有办法加快这个过程 这是我的密码: inIMG = gdal.Open(infile) bandas = [inIMG.GetRasterBand(b+1) for b in range(3)] print('hej1') meanSD = [b.ComputeBandStats(1) for b in bandas] print('hej2') 它很快打印出“hej1”,但几个小时后才写出“hej2”。因此,Com

当我尝试使用ComputeBandStats时,需要非常长的时间才能完成。有没有办法加快这个过程

这是我的密码:

inIMG = gdal.Open(infile)
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)]
print('hej1')
meanSD = [b.ComputeBandStats(1) for b in bandas]
print('hej2')
它很快打印出“hej1”,但几个小时后才写出“hej2”。因此,ComputeBandStats似乎是个问题

我尝试了没有参数(在较早的日期已经工作)和1,但它似乎没有任何区别


(我正在使用python 2.7和gdal 1.11.3)

我发现ComputeTestistics比ComputeBandStats快得多,所以我改用它。我不知道到底有什么区别,但除了速度优势外,ComputeTestatics也不忽略任何数据值,这对于ComputeBandStats来说是个问题。它还计算了最小值、最大值、平均值和标准差,这是我无论如何都需要的

这就是我所做的改变:

inIMG = gdal.Open(infile)
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)]
print('hej1')
stats = [b.ComputeStatistics(False) for b in bandas]
print('hej2')

我发现ComputeTestistics比ComputeBandStats快得多,所以我改用它。我不知道到底有什么区别,但除了速度优势外,ComputeTestatics也不忽略任何数据值,这对于ComputeBandStats来说是个问题。它还计算了最小值、最大值、平均值和标准差,这是我无论如何都需要的

这就是我所做的改变:

inIMG = gdal.Open(infile)
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)]
print('hej1')
stats = [b.ComputeStatistics(False) for b in bandas]
print('hej2')

有没有可能需要非常长的时间?您是否尝试过将列表理解分解为一个简单的
for
循环,以便监控进度?实际上,它在几个小时后完成。有什么方法可以加速这个过程吗?你最好的办法可能是多处理它,将任务分成多个较小的任务。您使用的数据有多大?此外,如果img文件非常大,请使用较小的测试用例进行测试,以查看过程是否加快。在计算后,您将如何处理
meanSD
?让它成为一个生成器而不是一个列表可能是有意义的,这样您就不会有在那个时间点处理所有数据的所有开销。是否可能需要非常长的时间?您是否尝试过将列表理解分解为一个简单的
for
循环,以便监控进度?实际上,它在几个小时后完成。有什么方法可以加速这个过程吗?你最好的办法可能是多处理它,将任务分成多个较小的任务。您使用的数据有多大?此外,如果img文件非常大,请使用较小的测试用例进行测试,以查看过程是否加快。在计算后,您将如何处理
meanSD
?让它成为一个生成器而不是一个列表可能是有意义的,这样您就不会有在那个时间点处理所有数据的所有开销。