0

以下のコードを使用して、numpy配列の処理を並列化します。この場合のターゲット関数は、入力データに対して単純な線形ストレッチを実行します。配列はセグメント化されてから、チャンクでプールに送られます。これは、Python投稿を使用した多数の並列処理のおかげで非常にうまく機能しています。

        pool = [multiprocessing.Process(target=linear_stretch, args= (shared_arr,slice(i, i+step), 35, 200, 2.0)) for i in range (0, y, step)]

私の質問は、次のようなことをすることは可能ですか?

stretch = Linear.linear_stretch()

関数のオブジェクトを作成し(語彙を修正してください!)、multiprocessing.Processで呼び出します。

関数が存在するモジュールは現在次のようになっています。

Linear.py

import numpy

def linear_stretch(args):
    #Do some stuff
4

1 に答える 1

3

はい、次のように:

stretch = Linear.linear_stretch

Python では、関数はすでに第一級のオブジェクトであり、他のオブジェクトと同じように操作したり、別の変数への参照によって渡すことができます。関数またはメソッドの後の括弧は、関数を呼び出して戻り値を渡すようにインタープリターに通知することに注意してください。これが理由です。

stretch = Linear.linear_stretch()

期待どおりに動作しません。

于 2012-07-17T00:08:24.297 に答える