передача данных между Java и Python - PullRequest
5 голосов
/ 01 ноября 2010

Извиняюсь, если мой вопрос нуб.Я использую Django 1.2 с pgsql 8.4, и мне необходимо запустить программу Java после получения входных данных от пользователя, выполнения некоторых вычислений и возврата результатов пользователю.наилучший способ передачи данных между Java и Python Django, чтобы позаботился о вышеописанном сценарии?Я слышал о Jython, но, согласно документации Django, для него требуется расширение jython-Django, но в настоящее время он не поддерживает django 1.2.x.Должен ли я передавать данные с помощью stdout?

спасибо людям, что выслушали меня.

Ответы [ 4 ]

4 голосов
/ 01 ноября 2010

Если все, что вы делаете, это вызываете Java для некоторых вычислений, то подпроцесс является самым простым способом, но я просто хотел добавить другой вариант.

JPype - это пакет, которыйпозволяет вам запускать JVM внутри вашей программы Python при вызове Java-кода, как если бы это был Python ( пример ).

То есть, как в Jython, вы вызываете код Java напрямую и какПодпроцесс в том, что вы на самом деле работает CPython.Рассмотрим JPype, если по какой-то причине Java-код нелегко вызвать из сценария оболочки (он же подпроцесс) или если требуется много двусторонней связи.

3 голосов
/ 01 ноября 2010

Используйте подпроцесс и запускайте программу Java как простой подпроцесс.Это очень, очень просто и достаточно быстро.

Если вам нужно сделать что-то более масштабируемое, вам следует подумать о создании сервера glassfish с вашим Java-кодом, чтобы ваш Python мог выполнять запросы веб-сервисов.на Яву.Это более масштабируемый, но и более трудоемкий процесс.

0 голосов
/ 09 ноября 2016

Это может быть тем, чего вы хотели избежать.но при самом простом способе использование сокетов / общего файла с Java будет лучшим решением.Сокет Python может отправлять информацию и пересматривать ее из Java.С другой стороны, если это похоже на боль.если вы используете java и python на одном компьютере, вы можете использовать общий файл, с которого java может читать, а python может его использовать.

0 голосов
/ 04 сентября 2015

Вы также можете использовать Py4J для этой задачи:

from py4j.java_gateway import JavaGateway
gateway = JavaGateway()                        # connect to the JVM
gateway.jvm.java.lang.System.out.println('Hello World!')

Сначала вы должны запустить программу Java, а затем вызвать метод Java из Python.

py4j не запускает jvm,он просто подключается к уже запущенному процессу Java.

...