1

Python のロックとスレッド化について質問があります。変数が別のスレッドによって上書きされるのを防ぐためにロックが使用されていることは理解しています。この問題を回避するためにロックを使用するのは正常なことですか?また、上書きされる可能性のあるすべての変数に対して取得/解放ロックを作成することも意味します。これは、私のプロジェクトではかなりの数に実行されます!

スレッドセーフリストで変数をラップしたり、スレッド名に基づいて一意の変数を作成したりしていますか? または、誰もがロックの取得と解放でコードを散らかしていますか?.

4

1 に答える 1

3

最良のアイデアは、スレッドをまったく使用しないことです。ほとんどの Python 実装にはグローバル インタープリター ロックがあり、最初からスレッドを使用する利点がなくなります。スレッド化を使用して IO を待機している場合は、代わりに非同期 IO を使用するだけで、同等またはそれ以上のパフォーマンスを得ることができます。スレッドを使用して複数のプロセッサ間で計算 (数値処理) を実行している場合、Python のグローバル ロックが機能しないため、代わりに複数のプロセスを使用することをお勧めします。

メリットがないのとは対照的に、Python でのスレッド化には多くの欠点と注意点があります。それでもデータ共有の制御を行う必要があり、制御できない瞬間にスレッドが CPU の注意を受け取ることに関連する異常に対処する必要があります。それはすべて何の利益にもなりません。

TL;DR スレッドを使用しないでください

于 2013-06-18T12:46:37.910 に答える