1

我有一个 python 脚本,它读取两个 tiff 图像并找到唯一的组合,计算观察结果并将计数保存到 txt 文件。

您可以在 www.spatial-ecology.net中找到完整的脚本

结果是:

tif1

2 2 3

0 0 3

2 3 3

tif2 

2 2 3 

3 3 4

1 1 1

result

2 2 2

3 3 1

0 3 2

3 4 1

2 1 1

3 1 2

该脚本工作正常。这就是它的实现方式。

  1. 逐行读取(对于范围(行)中的 irows :),以便不将完整图像加载到内存中(最终可以插入一个标志选项以读取 10 x 10 行)

  2. 遍历数组并创建一个元组

  3. 检查元组是否已经存储在 dic()

我的问题是:在这种情况下加快进程的技巧是什么?

我测试将结果保存在二维数组而不是 dic() 中,但它减慢了过程。我检查了这个链接,也许 python 地图功能可以提高速度。是这样吗?

提前感谢朱塞佩

4

1 回答 1

2

如果您想要一些关于性能的真正建议,您需要发布与您想要做的事情直接相关的代码部分。如果你至少不这样做,我们就无能为力了。也就是说,如果您无法发现效率低下的确切位置,我强烈建议您使用 python 的cProfile模块。用法如下:

import cProfile

def foo(*args, **kwargs):
    #do something

cProfile.run("foo(*args, **kwargs)")

这将打印您的代码的详细时间配置文件,让我们知道您的代码的哪些步骤占用的时间最多。通常,这将是一些方法,它们要么被调用的频率远远超过它们应该被调用的频率,要么进行一些愚蠢的额外处理,从而导致性能瓶颈。

于 2013-07-10T14:29:38.940 回答