IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Parrallelisme avec python dans une API


Sujet :

Python

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut Parrallelisme avec python dans une API
    Salut à tous !

    Je travail en se moment sur la création d'un API python qui permet de communiquer avec du matériel embarqué, l'API est composé de Session qui représentent chacune un port Serie/Bluetooth.
    J'ai donc créer cet API et créer un petit soft pour tester tous ça. Pour le soft j'utilise PyQt5 pour mon UI. Le problème est que lorsque j'appelle ma session pour : Creer/Envoyer/Recuperer/Décoder/retourner une trame, je suis obliger de mettre des processEvent dans ma gui pour garder ma fenêtre réactive. Cependant ça m'embête c'est pas beau tout ça. J'essaye donc de pallier à ça, une première solution serais d'embarqué PyQt dans mon API, c'est celle-ci est hors de question ( beaucoup trop lourd ),une deuxième serais de laisser le développeur des applications utilisant cette API se débrouiller à gérer ça, mais c'est pas très cool.

    Alors je chercher un moyen de rendre cette API un maximum réactif. Je me suis renseigner sur les différents modules python qui pourrais m’intéresser.
    - asyncio
    - multiprocessing
    - module-concurrent.futures

    Le module multiprocessing semble le plus adapté a mon besoin. Mais je ne sais pas trop comment l'implémenter dans mon API. Voici une fonction qui devrai être parallélisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    def getNextExpectedFrameWithMultipleAnswerPossible(self, expectedFrame):
            k = 0
            while k < 80:
                k += 1
                validFrame = self.frameAnalyzer.getNextValidFrame()
                decodedFrame = self.frameManager.decodeFrame(validFrame)
                if(decodedFrame == None):
                    continue
     
                resultat = True
                if isinstance(expectedFrame, str):
                    if expectedFrame in decodedFrame:
                        return decodedFrame
                else:
                    for item in expectedFrame:
                        if item in decodedFrame:
                            return decodedFrame       
                for i in expectedFrame:
                    found = False
                    for j in decodedFrame:
                        if str(i) == str(j):
                            found = True
                    if not found:
                        resultat = False
                if resultat:
                    return decodedFrame
    Que feriez vous pour rendre cette partie du code moins contraignante est plus réactive ? Je suis en python 3.4

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Une API décrit l'interface, les services rendus à l'utilisateur.
    Si vous voulez une chose "réactive", pour peu qu'on sache ce que ce terme recouvre, cela passe probablement par la réalisation d'une API asynchrone.
    Autrement dit, lorsque l'utilisateur invoque "getNextExpectedFrameWithMultipleAnswerPossible", cela va retourner un "future" sur lequel on pourra faire "wait" et récupérer le "retour" ou vous passez un "callback" qui sera appelé lorsque l'opération est terminée avec un status et un retour.
    Tant que ces choix (d'API) n'ont pas été faits, pas la peine de coder.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/01/2011, 13h47
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57
  4. [VB6] Multiselection avec CTRL dans une msflexgrid
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/04/2003, 10h57
  5. PB avec "self" dans une dll
    Par DiJiRiDouS dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo