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 回答