IronPython に「スクリプト クラス」があり、アプリのスクリプトはそのインスタンスでメソッドを呼び出すことによって機能します。複数のスレッドからの呼び出しスクリプトを実装する必要があります。それを行う正しい方法は何ですか?
複数の懸念があります。
ScriptScope
スレッドセーフですか?情報が矛盾しています。ScriptScope のドキュメントには、「ScriptScope はスレッド セーフではありません。複数のスレッドが同じモジュールにアクセスできる場合、ホストはロックするか、スレッドごとにコピーを作成する必要があります。」ただし、IronRuby は同じ DLR を使用し、@JimmySchementi は次のように述べています。 ."複数の を作成
ScriptScope
すると、同じ初期化スクリプトを複数回実行することになります。10 個の Python スクリプト ファイルを実行し、5 つのアセンブリをインポートして、全体としてかなりの量のコードを実行し、"スクリプト オブジェクト" を準備するとします。スレッドごとに同じコードを大量に実行する時間とメモリのコストを回避する方法はありますか?ScriptScope
変数をスレッド静的にして (つまり、 を適用して) 、途中ThreadStaticAttribute
で使用されるすべてのスレッドに対して初期化を実行していますか?Task.Run
またはTaskScheduler
、複数のスコープのコストが高いため、同時実行に制限を付けて使用する必要がありますか?
全体として、複数のスレッドで異なる引数で同じスクリプトを実行する方法を正しく実装するには? スクリプトは同時に実行する必要があり、競合状態が原因でクラッシュしてはなりません。