Bonjour à tous, et merci encore pour vos réponse sur les autres post (on le ne dit jamais assez !!!)
Mon problème cette fois concerne l'optimisation (en temps) d'un calcul. J'aimerai utiliser un peu plus que 1 processeur de mon ordi pour faire un calcul, rendu lent par une boucle dont je ne peut malheureusement pas me séparer (pour les autres calcul, je recommande le passage à une forme matricielle, le gain de temps est radical).
Mais là, mon programme un un grand nombre d'itération à faire, et ça prend du temps.
Mon problème, c'est que je lance ma fonction de calcul via un bouton issue d'une interface PyQt.
De ce que j'ai pu voir sur internet, on devrait pouvoir écrire qqch du genre :
import multiprocessing as mp
pool = mp.Pool()
pool.ma_fonction
et ça devrait utiliser tous mes processeurs à 100%.
Comme je l'explique avant, je lance ma fonction via un bouton dans une interface. du coup, j'ai qqch du genre :
Et si je mes un truc du genre self.pool.ma_fonction ou pool.self.ma_fonction, un message du type "AttributeError: 'Pool' object has no attribute 'self'"
Une solution ? il n'existe pas une fonction / Option à mettre tout en début de code pour forcer à utiliser un maximum de ressources (le rêve...) ?
Je ne pense pas que tu puisses améliorer beaucoup le temps d'exécution en multithreading, mais par contre tu peux commencer par l'utilisation de numpy.
Ensuite si cela n'est pas suffisant, tu as la possibilité de rajouter une interface C, gérant tous les calculs.
Autant en algo je m'en sort pas trop mal (issue du monde Matlab), mais en C je ne me débrouille pas du tout. Du coup, je vais rester en Python pour le moment.
Pour compenser, j'ai fait une fonction d'estimation du temps de calcul Ca limite un peu la frustration
Bonne journée,
Et merci encore !
Multiprocessing / Qt
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Il y a plus qu'à...