Aller au langage pour voir et se souvenir de la partie 8 Appeler le langage GO à partir de Python

Cette fois, nous appellerons le langage GO de Python pour accélérer la faiblesse de python.

Quand on parle de Python, ce n'est pas un «compilateur». Il a pris feu.

Ni java, ni "compilateur", ni C # ne sont un compilateur.

La conversion vers un langage intermédiaire et son exécution est lente et la première batterie s'épuise rapidement.

** GO est un vrai compilateur. ** **

** Du point de vue de python, il peut être possible d'accélérer la partie calcul. ** **

J'ai fait référence à Number of Fibonacci.

――Une paire de lapins donne naissance à une paire tous les mois à partir de deux mois après la naissance.

fib_go.py


from ctypes import *
lib = cdll.LoadLibrary("./fib.so")
for i in range(40):
    print ("fib %d  %d" %(i, lib.fib(i)))

Appelez simplement la fonction suivante dans lib.fib (i).

fib.go


package main

import "C"
//export fib
func fib(n int) int {
    if n <= 1 { return n }
    return fib(n-1) + fib(n-2)
}

func main() {}

** Compilez la fonction écrite en Go. ** **

> go build -o fib.so -buildmode=c-shared fib.go

Exécuter

>python fib_go.py
fib 0  0
fib 1  1  
fib 2  1  
fib 3  2  
fib 4  3  
fib 5  5  
fib 6  8  
fib 7  13 
fib 8  21 
fib 9  34 
fib 10  55
fib 11  89
fib 12  144
fib 13  233
fib 14  377
fib 15  610
fib 16  987
fib 17  1597
fib 18  2584
fib 19  4181
fib 20  6765
fib 21  10946
fib 22  17711
fib 23  28657
fib 24  46368
fib 25  75025
fib 26  121393
fib 27  196418
fib 28  317811
fib 29  514229
fib 30  832040
fib 31  1346269
fib 32  2178309
fib 33  3524578
fib 34  5702887
fib 35  9227465
fib 36  14930352
fib 37  24157817
fib 38  39088169
fib 39  63245986
fib 40  102334155

10 fois plus vite.

Recommended Posts

Aller au langage pour voir et se souvenir de la partie 8 Appeler le langage GO à partir de Python
Langage C pour voir et se souvenir de la partie 2 Appeler le langage C à partir de la chaîne Python (argument)
Langage C pour voir et se souvenir de la partie 1 Appeler le langage C depuis Python (bonjour le monde)
Langage C pour voir et se souvenir de la partie 4 Appelez le langage C depuis Python (argument) double
Langage C pour voir et se souvenir de la partie 5 Appel du langage C à partir du tableau Python (argument)
Langage C pour voir et se souvenir de la partie 3 Appelez le langage C depuis Python (argument) c = a + b
Aller à la langue pour voir et se souvenir du langage Partie 7 C en langage GO
Appelez Matlab depuis Python pour optimiser
Appeler des fonctions du langage C depuis Python pour échanger des tableaux multidimensionnels
Python pour passer d'une autre langue
Appeler le langage C depuis Python (python.h)
[Il n'est pas trop tard pour apprendre Python à partir de 2020] Partie 3 Python Language Basic (1)
Portage et modification du solveur de doublets de python2 vers python3.
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Liste de code Python à déplacer et à mémoriser
Appelez Rust de Python pour accélérer! Tutoriel PyO3: Partie des classes d'habillage ➀
Appelez Rust de Python pour accélérer! Tutoriel PyO3: partie des classes d'emballage ➁
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
L'histoire du portage du code de C vers Go (et vers la spécification du langage)
Appeler CPLEX depuis Python (DO cplex)
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
Publier de Python vers Slack
Appelez Rust de Python pour accélérer! Tutoriel PyO3: Emballage d'une partie de fonction simple
Comment se connecter à diverses bases de données à partir de Python (PEP 249) et SQL Alchemy
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Pour aller et venir entre python standard, numpy, pandas ①
Appelez Rust de Python pour accélérer! Tutoriel PyO3: Emballage d'une partie de fonction simple ➁
Connectez-vous à sqlite depuis python
Comment appeler Python ou Julia à partir de Ruby (implémentation expérimentale)
Porté du langage R de "Sazae-san's Janken Data Analysis" vers Python
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
[First Ripple] [I am] Appeler JavaScript (Node.js) depuis Python et traiter Ripple
[Python] Hit Keras depuis TensorFlow et TensorFlow depuis c ++ pour accélérer l'exécution.
Installez mecab sur le serveur partagé Sakura et appelez-le depuis python
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
Appelez dlm depuis python pour exécuter un modèle de régression à coefficient variable dans le temps
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-
Appelez votre propre bibliothèque partagée en langage C à partir de Python à l'aide de ctypes
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Appeler C depuis Python avec DragonFFI
Python 3.6 sous Windows ... et vers Xamarin.
objet perl et classe python partie 2.
[Introduction à Python3 Jour 1] Programmation et Python
Python, rendement, retour et parfois rendement de
Introduction à Python Hands On Partie 1
Publication de Python sur la chronologie Facebook
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Appeler popcount depuis Ruby / Python / C #
Lire et utiliser des fichiers Python à partir de Python
Introduction à Protobuf-c (langage C ⇔ Python)