После поиска возможности запуска Java-кода из приложения Django (python), я узнал, что Py4J - лучший вариант для меня. Я попробовал подпроцесс Jython, JPype и Python, и каждый из них имеет определенные ограничения:Py4J имеет большие накладные расходы, чем Jython и JPype
- Jython. Мое приложение работает на питоне.
- JPype багги. Вы можете запустить JVM только один раз, после чего он не сможет начать работу снова.
- Подпроцесс Python. Не удается передать объект Java между Python и Java из-за обычного консольного вызова.
На сайте Py4J написано:
С точки зрения производительности, Py4J имеет большую нагрузку, чем оба предыдущих решений (Jython и JPype), потому что он опирается на патрубках, но если производительность Неприкосновенный для вашего приложения доступ к объектам Java из программ Python может быть не лучшей идеей.
В моем приложении производительность критическая, потому что я работаю с Машинным учебным каркасом Mahout. Мой вопрос: будет ли Махут работать медленнее из-за сервера шлюза Py4J, или это накладные расходы означают, что вызывать методы Java из функций Python медленнее (в последнем случае производительность Mahout не будет проблемой, и я могу использовать Py4J).
Вам действительно нужно запустить JVM более одного раза? Зачем? – bastian