我正在尝试使用python / pyfmi和多处理并行模拟多个Modelica FMU。但是,一旦FMU初始化,我就无法从子进程返回任何pyfmi FMI对象。似乎pyfmi FMI对象(例如pyfmi.fmi.FMUModelCS2或pyfmi.fmi.FMUState2)不可选。我也尝试过莳萝来泡菜,这对我来说并不适合。使用dill,对象是可选择的,这意味着没有错误,但是如果我之后尝试重新加载它们会以某种方式损坏。有没有人知道如何解决这个问题?谢谢!
答案 0 :(得分:3)
当我创建EstimationPy时,我遇到了类似的问题。我最终创建了一个包装器,用于使用多个进程运行相同FMU的并行仿真。
我建议你看一下这里的实现 https://github.com/lbl-srg/EstimationPy/blob/master/estimationpy/fmu_utils/fmu_pool.py
示例http://lbl-srg.github.io/EstimationPy/modules/examples/first_order.html#run-multiple-simulations
答案 1 :(得分:2)
问题是pyfmi.fmiFMUModelCS2是一个依赖于外部库的Cython类,这使得它不可用。所以不幸的是,这是不可能的。
如果您想使用多处理,我看到的唯一方法是首先创建流程,然后将FMU加载到单独的流程中。通过这种方式,您无需挑选类。