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 :
Que feriez vous pour rendre cette partie du code moins contraignante est plus réactive ? Je suis en python 3.4
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
Merci d'avance !
Partager