Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Hyper acceleration: Numba x Multiprocessing

+3 votes

J'ai sauté sur un mag qui promettait de booster la vitesse de python , sans devoir apprendre trop de C...
https://github.com/GLMF/GLMF179/tree/master/Python
C'est intéressant, mais je voudrai connaitre les limites théoriques de ces techniques.

=> Peut on coder avec numba ET multiprocessing sur un même morceau de code pour en démultiplier la vitesse ? (Pycuda me semble difficile pour moi pour l'instant)

"autojit doesn't work with multiprocessing module"
https://github.com/numba/numba/issues/345

=> Autojit n'est pas obligatoire ?


Préférez vous Cython ?
J'ai 2 sons de cloche différends sur les perfs respectives:
http://htmlpreview.github.io/?https://github.com/rasbt/One-Python-benchmark-per-day/blob/master/htmls/day4_python_cython_numba.html

versus

enter image description here

dernière question : En cas de possibilité d' associer Numba avec Multiprocessing, peut on dans ce cas faire un stand alone en .exe avec par exemple cython_freeze ?

demandé 10-Mai-2015 par buffalo974 (2,542 points)
edité 10-Mai-2015 par buffalo974

2 Réponses

+4 votes
 
Meilleure réponse

Salut ;)

Pour ma part, le choix est vite fait : j'ai appris Cython il y a peu pour des questions de performance et de comptabilité avec mes codes existants.

Le multiprocessing est super facile avec Cython et OpenMP. Tu entoures simplement ta boucle par un statement with et t'es bon ;)

Son avantage par rapport au changement de langage complet est le fait que tu peux facilement l'intégrer avec du code déjà existant, et que t'as pas besoin d'apprendre un nouveau langage. D'autre part, le C produit est très largement optimisé. Il est souvent, pour des codes complexes, plus rapide que la version C codée à la main.
Son "souci" est cependant que t'as une syntaxe particulière à apprendre, surtout quant aux différents types de variables (python, C, entre les deux, memoryslices view, ...). Mais ça vient très vite ;)

répondu 12-Mai-2015 par coco
sélectionné 12-Mai-2015 par buffalo974
–3 votes

Personnellement si je dois vraiment viser la performance, je n'aime pas bricoler avec des trucs qui vont être difficiles à tenir dans le temps (mixin Python/C), je pars sur un autre langage.

répondu 11-Mai-2015 par DoubleNain (1,656 points)

Oui c'est pas faux...si j'arrive à tirer tout ce que python a à m'offrir, je partirai peut être sur du C un jour. Mais je vois des gars qui font du python depuis 10 ans et ils continuent
de s'extasier autant que moi qui débute.

En attendant, un bricolage qui fait ce que je lui demande, ça me suffit, c'est dans un cadre non professionnel. Je recherche le meilleur rapport Ça me plaît / J'y arrive .

Là je commence tout juste a réussir à faire des bidouilles sympas après avoir investi du temps à lire, trifouiller, déboguer. Jme vois pas replonger tout de suite dans un nouveau cycle infernal, sans passer par la case BONHEUR ^^

@Doublenain yop, Downvote car la place de cette reponse serait plutôt en com's...car elle ne répond pas vraiment au problème =//
(et c'est le but d'une réponse non?)

...