Правильное использование PythonInterpreter Jython для нескольких скриптов ⇐ JAVA
Правильное использование PythonInterpreter Jython для нескольких скриптов
Предположим, у меня есть список скриптов Python: «script1.py», «script2.py», «script3.py» и т. д. Используя Jython (который встроен в мое приложение Java), моя цель — запустить каждый из них. сценарий при запуске программы Java. Кроме того, каждый скрипт должен выполняться в своей собственной среде (IE имеет собственную глобальную область действия). Скрипты могут реализовывать или не реализовывать многопоточность, логику событий и т. д., поэтому я не могу гарантировать, что сценарий завершится до запуска другого сценария.
Насколько я понимаю, мне следует использовать PythonInterpreter от Jython, но все примеры использования PythonInterpreter, которые я могу найти, не охватывают мой конкретный вариант использования. Насколько я понимаю, весь код, выполняемый через один PythonInterpreter, имеет одну и ту же глобальную область видимости.
Моя текущая методология заключается в создании нового PythonInterpreter для каждого сценария, чтобы обеспечить изоляцию каждого сценария. Кроме того, я откладываю обработку PySystemState (реализация модуля sys в Jython) на Jython, и кажется, что Jython создает PySystemState «по умолчанию», который используется для всех созданных мной интерпретаторов Python. Достаточно ли этого, или мне также следует инициализировать новый PySystemState для каждого PythonIntepreter?
Я также не уверен в правильности использования метода PythonInterpreter#close() в моем конкретном случае, поскольку этот метод, похоже, также закрывает связанный PySystemState. Если Jython назначает один PySystemState каждому отдельному PythonInterpreter в моей программе, это может быть проблематично, если я закрою PythonInterpreter для одного скрипта (если он завершил выполнение), в то время как другие скрипты все еще выполняются.
Мой подход работает так, как и ожидалось, при условии, что я не закрываю PythonInterpreter после завершения выполнения сценария; однако я не уверен, является ли мой подход правильным/наиболее эффективным.
Предположим, у меня есть список скриптов Python: «script1.py», «script2.py», «script3.py» и т. д. Используя Jython (который встроен в мое приложение Java), моя цель — запустить каждый из них. сценарий при запуске программы Java. Кроме того, каждый скрипт должен выполняться в своей собственной среде (IE имеет собственную глобальную область действия). Скрипты могут реализовывать или не реализовывать многопоточность, логику событий и т. д., поэтому я не могу гарантировать, что сценарий завершится до запуска другого сценария.
Насколько я понимаю, мне следует использовать PythonInterpreter от Jython, но все примеры использования PythonInterpreter, которые я могу найти, не охватывают мой конкретный вариант использования. Насколько я понимаю, весь код, выполняемый через один PythonInterpreter, имеет одну и ту же глобальную область видимости.
Моя текущая методология заключается в создании нового PythonInterpreter для каждого сценария, чтобы обеспечить изоляцию каждого сценария. Кроме того, я откладываю обработку PySystemState (реализация модуля sys в Jython) на Jython, и кажется, что Jython создает PySystemState «по умолчанию», который используется для всех созданных мной интерпретаторов Python. Достаточно ли этого, или мне также следует инициализировать новый PySystemState для каждого PythonIntepreter?
Я также не уверен в правильности использования метода PythonInterpreter#close() в моем конкретном случае, поскольку этот метод, похоже, также закрывает связанный PySystemState. Если Jython назначает один PySystemState каждому отдельному PythonInterpreter в моей программе, это может быть проблематично, если я закрою PythonInterpreter для одного скрипта (если он завершил выполнение), в то время как другие скрипты все еще выполняются.
Мой подход работает так, как и ожидалось, при условии, что я не закрываю PythonInterpreter после завершения выполнения сценария; однако я не уверен, является ли мой подход правильным/наиболее эффективным.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение