Я работаю над внедрением Python в наше приложение для тестирования.Цель состоит в том, чтобы использовать Python для запуска нескольких тестовых сценариев для сбора данных и составления отчета о тестах.Несколько сценариев тестирования для одного запуска теста могут создавать глобальные переменные и функции, которые можно использовать в следующем сценарии.
Приложение также предоставляет модули расширения, которые импортируются во встроенный интерпретатор и используются для обмена некоторыми данными с приложением.
Но пользователь также может выполнить несколько тестовых прогонов.Я не хочу делиться этими глобальными данными, импортом и данными обмена между несколькими запусками теста.Я должен быть уверен, что перезагружаюсь в подлинном состоянии, чтобы контролировать тестовую среду и получить те же результаты.
Как мне следует повторно инициализировать интерпретатор?
Я использовал Py_Initialize () и Py_Finalize (), но получите исключение при втором запуске при повторной инициализации модулей расширения, которые я предоставляю интерпретатору.И документация предостерегает от использования его более одного раза .
Использование суб-интерпретаторов , похоже, имеет те же предостережения с инициализацией модулей расширения.
Я подозреваю, что я что-то не так делаю с инициализацией моих модулей расширения, но боюсь, что та же проблема происходит с модулями расширения сторонних производителей.
Возможно, можно заставить его работать, запустив интерпретатор вэто собственный процесс, чтобы быть уверенным, что вся память освобождена.
Кстати, я использую для этого boost-python, который также предупреждает ПРОТИВ использования Py_Finalize!
Anyпредложение?
спасибо