Вот моя проблема. У меня есть файл .jar, который я должен использовать в своей программе. Однако программа написана на Python.Самый быстрый способ запуска Java jar-файла из Python?
Поскольку моя программа занимает много времени для запуска (именованный объект тегов на большом корпусе разработки), я профилировал его с помощью cProfiler и выложил его профилированный с помощью line_profiler. Похоже, что 92% времени тратится на эту задачу.
В настоящее время я использую следующий код:
import subprocess as sub
sub.call(["java", "-jar", "-Xmx512m", "MyFile.jar",
featuresFileName, numIterations, featureCutOff])
Я где-то читал о подпроцессе против Popen и других бит и кусков, но не смог найти хорошее решение, которое не требует подпроцесс или Os звонков (из конечно, их может не быть).
Мне очень понравился совет по наиболее быстрому запуску файла .jar из сценария Python. Обратите внимание, однако, что я не могу изменить код Java, и у меня нет доступа к разговору с разработчиком этого кода.
В качестве альтернативы, и я не знаю, поможет ли это, или если я просто хватаюсь за соломинку здесь, но, возможно, есть способ сохранить процесс, вызванный в sub.call()
выше в фоновом режиме, так или иначе поддерживающий JVM (?), чтобы я мог просто вызвать файл jar. Может быть, это может помочь снизить затраты на запуск? BTW Я полный новичок Java (в основном, C++, C#, опыт Python), поэтому мой вопрос не имеет никакого смысла - извиняюсь заранее ...
Я тоже шел в этом направлении ... К сожалению, я должен запускать его один раз через каждый проход моего алгоритма, и когда я понял, что понял, что у меня нет шансов на параллелизм. – mlnyc
Похоже, если вы захотите сделать это быстрее, вам придется изменить код Java. Стандартный способ улучшить время запуска - запустить банку как услугу, которую вы можете сделать, добавив еще одну банку, которая вызывает это. Это имеет то преимущество, что ваша служба работает все время (то есть без запуска) –
Это именно то, что я только что отредактировал, чтобы задать свой вопрос :) Должен был обновить страницу сначала ... Я собираюсь попробовать, опубликую назад, когда у меня есть некоторые результаты ... Спасибо! – mlnyc