2

Pythonマルチスレッドメモ化は可能ですか? もしそうなら、どのように?

4

1 に答える 1

2

確かにそれは可能です。実際、同じ関数が同じパラメーターで並列に呼び出された場合に、いくつかの冗長な計算が実行される可能性があることを前提として、単純なシングル スレッドの実装は問題なく動作するはずだと思います。

シナリオの説明として、メモ化手順はおそらく次のようになります。

if args not in cache:
    cache[args] = func(args)
return cache[args]

2 つのスレッドが同じ で同時にこの場所にヒットした場合args、それらは両方ともfunc(args)並行して呼び出すことができますが、計算のインスタンスを 1 つだけ呼び出して、最初のインスタンスが完了するまで他のインスタンスを待機させる方が効率的です。これはあなたにとってそれほど問題ではないかもしれません。threadingそうであれば、(モジュールからの)ロックを使用して、一致する引数を持つスレッドをブロックするソリューションは非常に簡単です。

于 2011-01-17T10:17:37.260 に答える