OSError: исключение: нарушение прав доступа, чтение 0xFFFFFFFE1CD34660 (или универсальный адрес) при многопоточности FMU в Python

У меня есть вопрос относительно использования скрипта parameter_variation.py, предоставленного на GitHub.

Я использую функции FMPy здесь ( https://github.com/CATIA-Systems/FMPy), и у меня возникает конкретная ошибка, возникающая только при запуске определенного FMU, который лишь незначительно отличается от других FMU, которые я использовал с предоставлена ​​измененная версия примера сценария parameter_variation.py.

Ошибки:

...

Файл "c:\parameter_variation.py", строка 136, в simulate_fmu fmu.terminate()

Файл "C:\AppData\Local\Continuum\anaconda3\lib\site-packages\fmpy\fmi2.py", строка 231, завершается возвратом self.fmi2Terminate(self.component)

Файл "C:\AppData\Local\Continuum\anaconda3\lib\site-packages\fmpy\fmi2.py", строка 169, в w res = f (* args, ** kwargs)

OSError: исключение: чтение прав доступа 0xFFFFFFFE1CD34660

Конец

Я запускаю 100 симуляций для этого FMU в 20 кусках, хотя тот же FMU в скрипте parameter_variation.py, по-видимому, дает результаты, если я запускаю менее ~30 симуляций в ~6 кусках.

Есть ли у вас какие-либо догадки, почему может возникнуть ошибка нарушения прав доступа и как можно найти решение? Дайте мне знать, если это достаточно информации.

Заранее спасибо.

1 ответ

В заголовке вы упоминаете многопоточность (несколько экземпляров одного и того же FMU в одном и том же процессе), которая не поддерживается многими FMU и может привести к неожиданным побочным эффектам (например, через доступ к общим ресурсам). Если дело обстоит именно так, вы можете запустить свой вариант с синхронизированным планировщиком, установив переменную sync = True в parameter_variation.py (строка 27).

Другие вопросы по тегам