L'écriture d'une extension Python en Aller (Golang)
J'utilise actuellement Cython pour le lien C et Python, et d'obtenir l'accélération lente bits de code python. Cependant, je voudrais utiliser goroutines à mettre en œuvre une très lent (et très parallélisables) peu de code, mais il doit être appelée à partir de python. (J'ai déjà vu cette question)
Je suis (un peu) plaisir de passer par C (ou Cython) pour mettre en place des structures de données, etc si nécessaire, mais en évitant de cette couche supplémentaire serait bon d'une correction de bug/évitement point de vue.
Quelle est la façon la plus simple de le faire sans avoir à réinventer toutes les roues?
Vous devez vous connecter pour publier un commentaire.
Mise à jour 2015: possible de parcourir 1,5 https://blog.filippo.io/building-python-modules-with-go-1-5/
Malheureusement, ce n'est pas possible actuellement. Aller pouvez exécuter le code en C (et que le code C peut rappeler en Aller), mais le
principal
de la fonction dans le jeu de Go, de sorte que le Go runtime peut mettre les choses en place.python_part_1 | go_program | python_part_2
à l'aide de tubes (ou des fichiers intermédiaires, ou XMLRPC) pour transmettre les données?Il y a un allez-python paquet précisément pour vous aider à écrire des extensions Python en Aller:
go-python
vous aide à invoquer de Python à l'Aller, pas l'inverse.J'ai écrit une extension de setuptools qui vous permet d'écrire des modules cpython à l'interface avec aller: https://github.com/asottile/setuptools-golang
Il y a quelques exemple extensions ici:
La chose intéressante est que ces peut être installé comme tous les autres
pip
paquet et le soutien à la fois disponible et pypy.PEP 513 manylinux1 roues peuvent également être construit pour fournir une pré-construit roues par l'intermédiaire de la
setuptools-golang-build-manylinux-wheels
outil.L'approche est presque identique à celui de @ColonelPanic de la réponse, mais utilise quelques astuces supplémentaires pour permettre python2 + python3 de compatibilité.