Utiliser NumPy et Cpython avec Jython
Je doit utilisation commerciale bibliothèque Java, et tiens à le faire à partir de Python. Jython est robuste et je suis très bien avec un peu de point de communiqués de derrière. Cependant, je voudrais à utiliser NumPy, ce qui évidemment ne fonctionne pas avec Jython. Des Options comme CPype et Java numérique des bibliothèques sont peu attrayantes. Le premier est essentiellement morts. Ces derniers sont pour la plupart immatures et de l'absence de la facilité d'utilisation et une large acceptation de NumPy. Ma question est: Comment peut-on avoir Jython et le code Python interagir? Il serait acceptable pour moi de l'appeler Jython de Disponible ou l'autre manière autour.
source d'informationauteur gappy
Vous devez vous connecter pour publier un commentaire.
C'est ironique, considérant que Jython et Numérique (NumPy l'ancêtre) ont été initiés par le même développeur (Jim Hugunin, qui a ensuite déménagé à aussi initier IronPython et détient désormais une sorte de l'architecte en chef de position au sein de Microsoft, à travailler sur tous les types de dynamique d'appui aux langues .NET et Silverlight), qu'il n'y a pas de vraiment bon façon d'utiliser numpy en Jython. La chose la plus proche que, qui, je le sais, est le "jnumerical" projet -- les (rares) les docs sont sur sourceforgemais la mise à jour des sources sont sur bitbucket.
"Numérique Python", ce qui jnumerical met en œuvre, n'est pas aussi lisse et rationnel que son numpy descendant, mais il a à peu près la même fonctionnalité et partage beaucoup des concepts et de la philosophie, de sorte que vous pourriez peut-être trouver qu'il utilisable -- la peine de vérifier, au moins.
Envisager d'utiliser execnetqui permet de combiner les forces des deux Jython et Disponible, y compris les NumPy. L'inconvénient ici est que vous aurez à payer pour le coût de la sérialisation/désérialisation des objets entre les deux interprètes dans les deux processus différents espaces. (Vous pouvez éviter la surcharge du réseau à l'aide de son support pour les sous-processus.) Mais une telle combinaison peut bien fonctionner, étant donné que vous envisagez de JPype, qui serait comparable (et probablement plus) de frais généraux. Juste vous assurer que vous avez partitionné le travail de manière appropriée.
La Jython développeurs (et je suis l'un d'entre eux) sont à la recherche à l'appui NumPy dans l'avenir, par le biais du soutien de la C API d'Extension, mais c'est très bien de la planification préliminaire, en effet.
Avertissement: n'Ont pas eu persnal expérience avec elle encore
Semble JyNI – Jython Interface Native est le chemin à parcourir.
Il y a aussi un plus récent question publiée qui peut avoir des nouveaux alternatives.
Je regarde beaucoup formard à la Jython C API d'Extension! Ce serait génial!
Jusqu'à ce que, à ce point, je pense que vous avez deux solutions:
http://jepp.sourceforge.net/ pour l'incorporation de python en java, il a une belle console. Le disadvatage, pour moi un trop grand disadvatage, c'est qu'il doit être compilé à l'encontre de votre propre python. Et avec le python de mise à niveau, vous devez recompiler (je ne veux pas compiler python, afin de compiler et d'utiliser l'extension - c'est pas possible, surtout si le code doit être exécuté sur des machines différentes, sur la grille par exemple)
http://lucene.apache.org/pylucene/jcc/ - ce est utilisé pour lucene, et pour de nombreux autres projets. Personnellement, je les utiliser pour envelopper la PORTE de la PNL moteur et aussi solr. Pour la rendre disponible à Python. Ccc est beaucoup plus rapide que la (mort) JPype, probablement parce que certaines structures de données (comme les listes) sont optimisés et aussi parce qu'il est à l'interface python<->java via C++ extension (d'après le: http://www.slideshare.net/onyame/mixing-python-and-java page 30) j'ai essayé de déplacer 6mil d'entiers dans la liste entre python et java, JPype était ordres de grandeur plus lent (mais je ne me souviens pas les chiffres)
Cependant, l'utilisation de Ccc, vous pouvez envelopper seulement les méthodes publiques, et il est parfois difficile, surtout si cette méthode est la réception ou le retour de certains objets java (en bref, CCC doit compiler des wrappers aussi pour le passé-dans les objets, sinon, toutes les méthodes utilisant la/le retour de telles méthodes ne sont pas accessibles). Donc, si vous devez distribuer votre code, vous êtes mieux de avec du PCPC.
Si vous vous en tenez à la matrice et vecteur de maths, je suggère de jeter un coup d'oeil sur vectorz.
C'est un pur Java mise en œuvre et doit être de 100% utilisable à partir de l'intérieur de jython. Je ne l'ai toujours pas essayé, mais bientôt, car j'ai le même nécessité de trouver un numpy alternative.