OSError:异常:在 Python 中多线程处理 FMU 时读取0xFFFFFFFE1CD34660(或通用地址)的



我有一个关于使用 GitHub 上提供的parameter_variation.py脚本的问题。

我在这里使用 FMPy 函数 (https://github.com/CATIA-Systems/FMPy(,并且仅在运行某个 FMU 时发生特定错误,这与我使用parameter_variation.py示例脚本的修改版本使用的其他 FMU 仅略有不同。

错误:

...    
File "c:parameter_variation.py", line 136, in simulate_fmu
    fmu.terminate()    
File "C:AppDataLocalContinuumanaconda3libsite-packagesfmpyfmi2.py", line 231, in terminate
   return self.fmi2Terminate(self.component)    
File "C:AppDataLocalContinuumanaconda3libsite-packagesfmpyfmi2.py", line 169, in w res = f(*args, **kwargs)    
OSError: exception: access violation reading 0xFFFFFFFE1CD34660    
End

我在 20 个块中为此 FMU 运行 100 个模拟,尽管如果我在 ~6 个块中运行少于 ~30 个模拟,parameter_variation.py脚本中的相同 FMU 似乎可以提供结果。

您是否猜测为什么

会发生访问冲突错误以及如何伪造解决方案?让我知道这是否是足够的信息。

提前谢谢。

在标题中,您提到了多线程(同一进程中同一 FMU 的多个实例(,许多 FMU 不支持它,并且可能导致意想不到的副作用(例如通过访问共享资源(。如果是这种情况,您应该能够通过在 parameter_variation.py 中设置变量sync = True来使用同步调度程序运行变体(第 27 行(。

最新更新