Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 13, 2009 00:55:05

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к Java-классам

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

P.S. В специализированый раздел не пишу бо он умер.



Офлайн

#2 Окт. 13, 2009 07:44:00

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Обращение к Java-классам

knkd
Jython теоретически тоже подошел бы, но сильно ненравится хроническое отставание номера версии.
Вам задачу рещать надо или шашечки?



Офлайн

#3 Окт. 13, 2009 12:03:50

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к Java-классам

Daevaorn
Вам задачу рещать надо или шашечки?
Мне математика нужна.

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

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

Поэтому нужно оставив обработку файлов на питоне реализовать расчёт на яве.
Альтернативой может быть вынесение исходных данных в отдельные файлы и обработка их отдельно яво-программой через os.popen(), но придётся учить обработку файлов на яве…



Офлайн

#4 Окт. 13, 2009 13:06:06

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Обращение к Java-классам

knkd
Daevaorn
Вам задачу рещать надо или шашечки?
Тестовые задачи показали что питон справляется примерно в десять раз дольше, бо хоть вычисления и простые но их много.
А если попробовать вычисления написать на cython?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Окт. 13, 2009 17:07:13

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к Java-классам

PooH
А если попробовать вычисления написать на cython?
Думал над этим. Но к сожалению уровень владения буржуйскими языками делает документацию к нему для меня недоступной :(
Java в этом отношении предпочтительнее.

Можно наверное попытаться добавить метод format() к <str> в Jуthon. Поскольку по большому счёту всё упирается только в него…



Отредактировано (Окт. 13, 2009 17:08:56)

Офлайн

#6 Окт. 14, 2009 05:16:39

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Обращение к Java-классам

Посмотрите вот это http://jpype.sourceforge.net/



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Окт. 14, 2009 18:41:17

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Обращение к Java-классам

может лучше распараллелить задачу и запускать в несколько процессов или как минимум отпрофайлить код и найти узкие места? хотя скорость плохая скорей всего из-за преобразований str -> int

Офлайн

#8 Окт. 14, 2009 23:56:34

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к Java-классам

slav0nic
хотя скорость плохая скорей всего из-за преобразований str -> int
Хуже :)
Разбор файла, потом str -> float, потом округление если не влазит в указаное к-во символов, потом выравнивание по формату, потом формирование структуры файла. И так в несколько стадий - от одной внешней программы к другой.
slav0nic
как минимум отпрофайлить код и найти узкие места?
В коде который готовит файлы, узкие места известны, непреодолимы и в общем меня устраивают. В первом варианте десяток входных файлов разгребался за 10 секунд, сейчас за полторы.

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

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

Пока остаётся учится разбирать файлы Явой…



Офлайн

#9 Окт. 16, 2009 04:37:08

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к Java-классам

Да здравствует совецкое велосипедостроение - луччее велосипедостроение в мире!

Отныне промежуточный результат сохраняется обычным Python26 в текстовые файлы, потом разбирается Jython и передаётся в Java класс.



Офлайн

#10 Окт. 16, 2009 16:01:57

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Обращение к Java-классам

psyco не пробовал?
а в numpy большая часть на С написана, так что не думаю что будет медленнее.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version