0

IronPythonコードの先頭で「clr.AddReference( 'IronPython.Stdlib')」を実行しても(StdLibのビルドされたコピーをすぐに見つけることができます)、できないという奇妙な問題があります。 Popen にアクセスします。これはマルチスレッド アプリケーションであり、多くのスレッド (現時点では 10 個) が同時にこのスクリプトにアクセスしようとしています。

コンソールで IronPython からアクセスしても問題ありません。

2013-09-03 17:10:11.5197 Error PythonScriptEngineProviderLib.PythonScriptEngineProvider.ExecuteCompiledCodeInternal Could not execute Python code. IronPython.Runtime.Exceptions.ImportException: Cannot import name Popen
   at IronPython.Runtime.Importer.ImportFrom(CodeContext context, Object from, String name)
   at Microsoft.Scripting.Interpreter.FuncCallInstruction`4.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
   at IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
   at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
   at PythonScriptEngineProviderLib.PythonScriptEngineProvider.ExecuteCompiledCodeInternal(CompiledCode cc, IDictionary`2 scopeVariables) in 
...
4

1 に答える 1

0

これに対する解決策はありませんが (私は OP です)、プロセスの起動時にのみ発生する問題のようです。適切な待機期間の後、動作を開始します。その期間が何であるかはわかりませんが、それに依存するサブルーチンが数分後に期待どおりに機能していることがわかります (待機し、後で失敗が発生したときに再試行します)。

これは長時間実行されるプロセスであるため、現時点では、この問題に大きなコストがかかることはありません。ただし、推測する必要がある場合、StdLib には、開始スレッドをブロックする可能性のある読み込み遅延があるようですが、他のスレッドはブロックされないようです。

于 2013-09-03T21:43:31.623 に答える