Ce que j'ai fait quand je voulais rendre Python plus rapide -Édition Numba-

Préface

http://qiita.com/open_cans/items/f180ae4dc945dc7b9066 Ceci est une suite de cet article. J'écris principalement pour les gens qui se soucient des millisecondes ou des microsecondes.

Qu'est-ce que numba

numba est un gars qui compile du code python avec un compilateur jit pour le rendre plus rapide Un gars assez incroyable qui peut accélérer très facilement

Exemple d'utilisation de numba

sample.py


import numba

@numba.jit
def sumation(num):
  sum=0
  for i in range(num):
    sum += i
  return sum

sum = sumation(100)
print(sum)

Avant la fonction comme dans la troisième ligne @numba.jit Ecrivez C'est incroyable comme il est facile d'accélérer! !!

Remarques sur numba

C'est facile, mais il y a certaines choses à garder à l'esprit lors de son utilisation, je vais donc les énumérer.

La notation inclusive ne peut pas être utilisée

Dans l'article précédent, je l'ai écrit comme la meilleure notation d'inclusion, mais elle ne peut pas être utilisée avec numba. Je ne pense pas que ce soit là, mais si vous regardez l'article précédent et écrivez la notation d'inclusion, vous devez réécrire la notation d'inclusion dans l'instruction for.

La liste vide ne peut pas être utilisée

sample.py


import numba

@numba.jit
def inputList(num):
  temp=[]
  temp.append(num)
  return sum

sum = inputList(100)
print(sum)

Si vous écrivez comme ça, vous obtiendrez une erreur Temp = [] est la cause

Précautions lors de la compilation

Si vous écrivez @ numba.jit dans une fonction qui ne fonctionne pas en premier lieu, l'erreur sera masquée et vous ne la comprendrez pas bien, alors assurez-vous d'écrire @ numba.jit après avoir confirmé que cela fonctionne de manière fiable

Précautions lors de la combinaison de numba et numpy

Parfois, j'essaie d'accélérer une fonction qui utilise numpy avec numba, mais parfois je ne peux pas. Apparemment, certaines fonctions numba ne prennent pas en charge numpy. Cet article (http://nekowarau.seesaa.net/article/428663212.html) Selon numba, la fonction numpy prise en charge par numba est (http://numba.pydata.org/numba-doc/0.14/numpy_support.html). Semble pouvoir confirmer avec

Si ce n'est pas le cas, écrivez la fonction en scratch Ensuite, vous pouvez bénéficier de l'accélération.

Recommended Posts

Ce que j'ai fait quand je voulais rendre Python plus rapide -Édition Numba-
Ce que j'ai fait lors de la mise à jour de Python 2.6 vers 2.7
Ce que j'ai fait pour économiser la mémoire Python
[Python] Ce que j'ai fait pour faire un test unitaire
Ce à quoi j'étais accro lors de l'utilisation de Python tornado
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
Ce à quoi j'étais accro lorsque l'utilisateur de traitement est passé à Python
Une histoire que je voulais faire quand j'ai eu une liste de sessions d'étude avec Python
Ce à quoi j'étais accro en présentant ALE à Vim pour Python
Ce à quoi j'ai fait référence en étudiant tkinter
Je voulais résoudre ABC160 avec Python
Je voulais résoudre ABC159 avec Python
Ce que j'ai fait avec les tableaux Python
Ce que j'étais accro à Python autorun
Je voulais résoudre ABC172 avec Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[Chez Coder] Ce que j'ai fait pour atteindre le rang vert en Python
J'ai refactoré "J'ai essayé de faire d'Othello AI lorsque les débutants en programmation ont étudié python"
Je voulais résoudre NOMURA Contest 2020 avec Python
Je veux faire un jeu avec Python
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
[Question] Que se passe-t-il si vous utilisez% en python?
Je veux créer du code C ++ à partir de code Python!
Comment rendre le Python des débutants plus rapide [numpy]
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python
Que faire lorsque l'imitation est intégrée à Python
Quand j'ai essayé d'introduire python3 dans atom, je suis resté coincé
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Que faire lorsque "impossible d'importer le nom xxx" [Python]
Ce que j'ai fait pour établir une connexion SSH à l'environnement VPS Ubuntu
Je veux faire quelque chose avec Python à la fin
Ce que j'ai fait pour accélérer la tâche de recherche de chaînes
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python
J'ai essayé de créer diverses "données factices" avec Python faker
Je voulais ignorer certaines extensions lors de la création de la documentation Sphinx
Lorsque j'essaye de créer Apache SSL, cela ne démarre pas.
Que faire lorsque "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" apparaît en Python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Je veux ajouter un joli complément à input () en python
[Python3] Liste des sites auxquels j'ai fait référence lorsque j'ai lancé Python
Ce que j'ai appris en Python
Python Learning Episode 4 de Mayungo: J'ai essayé de voir ce qui se passe lorsque les nombres sont traités comme des lettres
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Ce que j'ai fait pour générer les journaux d'application dans l'environnement flexible GAE.
Notez ce que vous avez fait pour utiliser Flycheck avec Python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python