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 !