Вопрос

Я должен используйте коммерческую библиотеку Java и хотели бы сделать это из Python.Jython надежен, и меня устраивает, что он отстает на несколько точечных релизов.Тем не менее, я хотелось бы также использовать NumPy, который, очевидно, не работает с Jython.Такие варианты, как CPype ( Тип CPype ) а числовые библиотеки Java непривлекательны.Первый, по сути, мертв.Последние в основном незрелые, им не хватает простоты использования и широкого признания NumPy.Мой вопрос заключается в следующем:Как можно обеспечить взаимодействие кода Jython и Python?Для меня было бы приемлемо вызвать Jython из Cpython или наоборот.

Это было полезно?

Решение

Это иронично, учитывая, что Jython и Numeric (предок NumPy) были инициированы одним и тем же разработчиком (Джим Хьюгунин, который затем также инициировал IronPython и сейчас занимает что-то вроде должности старшего архитектора в Microsoft, работая над поддержкой всех видов динамических языков для .NET и Silverlight), что нет действительно хорошо способ использования numpy в Jython.Самая близкая к этому вещь, о которой я знаю, - это проект "jnumerical" - (скудные) документы находятся на кузница- источник, но обновленные источники находятся на битбакет.

"Числовой Python", который реализует jnumerical, не такой гладкий и оптимизированный, как его потомок numpy, но он обладает примерно такой же функциональностью и разделяет многие концепции и философию, так что, возможно, вы могли бы найти его пригодным для использования - по крайней мере, стоит проверить.

Другие советы

Рассмотрим использование Execnet., Что позволяет объединять сильные стороны как Jython, так и CPYthon, включая текущий Numpy. Недостатком вот в том, что вам придется оплатить стоимость сериализации / десериализующих объектов между двумя переводчиками в двух разных процессах. (Вы можете избежать накладных сетей, используя его поддержку подпроцесс.) Но такая комбинация может работать хорошо, учитывая, что вы рассматриваете jpype, что бы подобное (и, вероятно, выше) накладной. Просто убедитесь, что вы разбиваете работу надлежащим образом.

Разработчики Jython (и я один из них) смотрят на поддержку Numpy в будущем, благодаря поддержке API C Extension, но это действительно очень предварительное планирование.

Отказ от ответственности: не имел большой опыт с этим

Похоже на Jyni - Jython Native Interface это путь.

Там тоже есть Новый вопрос опубликовал которые могут иметь более новые альтернативы.

Я очень посмотрю Формурда к API Jython C API! Это было бы круто!

До этого момента, я думаю, у вас есть две альтернативы:

  • http://jepp.sourceforge.net/ Для внедрения Python в Java у него хорошая консоль. Недоставление, для меня слишком большое недостаток, заключается в том, что оно должно быть составлено против вашего собственного питона. А с обновлением Python вам нужно перекомпилировать (я не хочу компилировать Python, чтобы скомпилировать и использовать расширение - это также невозможно, особенно если код должен выполняться на разных машинах, в сетке, например, на сетке, например )

  • http://lucene.apache.org/pylucene/jcc/ - Это используется для Lucene и для многих других проектов. Я лично использую его, чтобы обернуть двигатель NLP Gate, а также Solr. Чтобы сделать это доступным для Python. JCC намного быстрее, чем (мертвый) JPYPE, вероятно, потому что некоторые структуры данных (например, списки) оптимизированы, а также потому, что он взаимодействует Python <-> Java через расширение C ++ (в соответствии с этим: http://www.slideshare.net/onyame/mixing-python-and-java Page 30) Я попробовал двигаться 6 миллионов целых чисел в списке между Python и Java, JPYPE был заказыми на медленнее (но я не помню числа)

Однако, используя JCC, вы можете обернуть только общедоступные методы, а иногда это сложно, особенно если этот метод получает или возвращает определенные объекты Java (Короче говоря, JCC должен собирать обертки для прохожденных объектов, в противном случае все методы, использующие / Возвращение таких методов не доступны). Поэтому, если вам не нужно распространять свой код, вы лучше с JEPP.

Если вы придерживаетесь вектора и матрицы математики, я предлагаю взглянуть на векторАнкет Это чистая реализация Java и составляет на 100% с использованием в пределах Jython. Я до сих пор не пробовал, но в ближайшее время, поскольку у меня такая же необходимость в нахождении numpy альтернативы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top