Partage
  • Partager sur Facebook
  • Partager sur Twitter

Multiprocessing / Qt

Sujet résolu
    31 mai 2013 à 11:04:02

    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 :

    QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.ma_fonction)

    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...) ?


    • Partager sur Facebook
    • Partager sur Twitter
      3 juin 2013 à 8:58:28

      Hello,

      Personne ne pratique trop ce genre de calcul ?

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 juin 2013 à 10:25:59

        Bonjour,

        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.

        Bon courage pour la suite...

        • Partager sur Facebook
        • Partager sur Twitter
          9 juillet 2013 à 11:04:05

          Merci pour ton aide,

          Alors oui je fais déjà du calcul par array, ça me permet de gagner beaucoup de temps, mais j'arrive à certaines limites et j'aurais voulu optimiser.

          C'est très frustrant car je n'utilise qu'un processeur et à peine 4Go de RAM.

          Il n'existe pas une commande magique (oui oui je sais ...) pour dire

          1) détecte les ressources de l'ordi

          2) charge les limites au max pour faire du calcul ?

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            9 juillet 2013 à 11:05:38

            Ensuite si cela n'est pas suffisant, tu as la possibilité de rajouter une interface C, gérant tous les calculs.

            Il y a plus qu'à...
            • Partager sur Facebook
            • Partager sur Twitter
              18 juillet 2013 à 8:27:22

              Bon et bien merci beaucoup pour ta réponse :)

              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 :D Ca limite un peu la frustration :D

              Bonne journée,

              Et merci encore !

              • Partager sur Facebook
              • Partager sur Twitter

              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.
              • Editeur
              • Markdown