1

2 つの tiff 画像を読み取り、一意の組み合わせを見つけ、観察をカウントし、カウントを txt ファイルに保存する python スクリプトがあります。

完全なスクリプトは 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. 行ごとに読み取ります (range(rows) 内の irows の場合:) メモリに完全なイメージをロードしないようにします (最終的にフラグ オプションを挿入して、10 x 10 行を読み取ることができます)。

  2. 配列を調べてタプルを作成する

  3. タプルがすでに dic() に格納されているかどうかを確認します

私の質問は次のとおりです。この場合、プロセスをスピードアップするためのトリックはどれですか?

結果を dic() ではなく 2 次元配列に保存するようにテストしましたが、プロセスが遅くなります。このリンクを確認すると、python map 関数で速度が向上する可能性があります。これは事実ですか?

前もって感謝します ジュゼッペ

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 に答える