Найти - Пользователи
Полная версия: Обращение к Java-классам
Начало » Python для экспертов » Обращение к Java-классам
1 2
knkd
Есть ли способ вызывать Java-классы из программы на Python? (Jython и гербалайф не предлагать :))
Jython теоретически тоже подошел бы, но сильно ненравится хроническое отставание номера версии.

P.S. В специализированый раздел не пишу бо он умер.
Александр Кошелев
knkd
Jython теоретически тоже подошел бы, но сильно ненравится хроническое отставание номера версии.
Вам задачу рещать надо или шашечки?
knkd
Daevaorn
Вам задачу рещать надо или шашечки?
Мне математика нужна.

Специфика такая что я обрабатываю множество маленьких текстовых файлов с исходными данными и результатами сторонних программ.
В них встречается море ошибок, поэтому весь ход процесса тщательно логируется, а наиболее очевидные ошибки и узловые точки печатаются на экран.
В уже готовом коде кругом используется “”.format() это оказалось очень удобно, но из-за этого я не могу использовать Jython - там формата нету.
Переписать всё заново - слишком долго.

Яву я знаю очень слабо, но мне нужно добавить простейшую математику - это я осилю.
Тестовые задачи показали что питон справляется примерно в десять раз дольше, бо хоть вычисления и простые но их много.

Поэтому нужно оставив обработку файлов на питоне реализовать расчёт на яве.
Альтернативой может быть вынесение исходных данных в отдельные файлы и обработка их отдельно яво-программой через os.popen(), но придётся учить обработку файлов на яве…
PooH
knkd
Daevaorn
Вам задачу рещать надо или шашечки?
Тестовые задачи показали что питон справляется примерно в десять раз дольше, бо хоть вычисления и простые но их много.
А если попробовать вычисления написать на cython?
knkd
PooH
А если попробовать вычисления написать на cython?
Думал над этим. Но к сожалению уровень владения буржуйскими языками делает документацию к нему для меня недоступной :(
Java в этом отношении предпочтительнее.

Можно наверное попытаться добавить метод format() к <str> в Jуthon. Поскольку по большому счёту всё упирается только в него…
PooH
Посмотрите вот это http://jpype.sourceforge.net/
slav0nic
может лучше распараллелить задачу и запускать в несколько процессов или как минимум отпрофайлить код и найти узкие места? хотя скорость плохая скорей всего из-за преобразований str -> int
knkd
slav0nic
хотя скорость плохая скорей всего из-за преобразований str -> int
Хуже :)
Разбор файла, потом str -> float, потом округление если не влазит в указаное к-во символов, потом выравнивание по формату, потом формирование структуры файла. И так в несколько стадий - от одной внешней программы к другой.
slav0nic
как минимум отпрофайлить код и найти узкие места?
В коде который готовит файлы, узкие места известны, непреодолимы и в общем меня устраивают. В первом варианте десяток входных файлов разгребался за 10 секунд, сейчас за полторы.

Но теперь задача другая. Вводна такова - входные данные уже распарсены, собраны в кортеж и ждут пока их обработают :)
Нужно провести дополнительные операции с точками в трёх измерениях - смещение, поворот, масштабирование, переход к цилиндрической системе координат (в перспективе - аппроксимация). Опять таки всё в несколько стадий.
В сумме количество операций на один расчёт переваливает за пять миллионов. Кроме того из-за многостадийных тригонометрических операций при использовании float точность заметно уплывает, что нежелательно. Вот присматриваюсь к длинным типам из NumPy - точность вернётся но скорость наверное ещё упадёт.

JPype - как работает не понял, на тестовых примерах постоянно вываливается с критической ошибкой выньдовса.
Cython - вероятно заметное повышение скорости даст только при написании файлов в его “специальном уличном” синтаксисе. При компилировании той части программы которая разбирает содержимое файлов время исполнения уменьшилось с 1,407 секунд до 1,395 :)

Пока остаётся учится разбирать файлы Явой…
knkd
Да здравствует совецкое велосипедостроение - луччее велосипедостроение в мире!

Отныне промежуточный результат сохраняется обычным Python26 в текстовые файлы, потом разбирается Jython и передаётся в Java класс.
slav0nic
psyco не пробовал?
а в numpy большая часть на С написана, так что не думаю что будет медленнее.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB