Je suis en train d'utiliser des générateurs comme un moyen rapide pour obtenir les progrès des processus longs et je me demande comment est-il fait habituellement que je trouve pas très élégant ...utilisation des générateurs comme un notificateur de progression
Laissez-moi vous expliquer d'abord, j'ai un module engine.py qui fait un peu de traitement vidéo (segmentation, soustraction bg/fg, etc.) qui prend beaucoup de temps (de quelques secondes à plusieurs minutes). J'utilise ce module à partir d'une interface graphique écrite en wxpython et d'un script de console. Quand j'ai regardé comment implémenter des dialogues de progression dans wxpython, j'ai vu que je devais obtenir une valeur de progression pour mettre à jour mon dialogue, ce qui est de la pure logique ... J'ai donc décidé d'utiliser le nombre de frames traités dans mes fonctions de moteur, donnez le nombre d'images en cours toutes les 33 images et cédez None lorsque le traitement est terminé.
en faisant cela, voici à quoi il ressemble:
dlg = wx.ProgressDialog("Movie processing", "Movie is being written...",
maximum = self.engine.endProcessingFrame,self.engine.startProcessingFrame,
parent=self,
style = wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME | wx.PD_SMOOTH | wx.PD_CAN_ABORT)
state = self.engine.processMovie()
f = state.next()
while f != None:
c, s = dlg.Update(f, "Processing frame %d"%f)
if not c:break
f = state.next()
dlg.Destroy()
Cela fonctionne très bien, il n'y a absolument aucune perte de vitesse notable, mais je voudrais être en mesure d'appeler la fonction processMovie() sans avoir à traiter avec des générateurs si je ne veux pas. Par exemple, mon script de console qui utilise le module moteur ne se soucie pas de la progression, je pourrais l'utiliser mais il est destiné à être exécuté dans un environnement où il n'y a pas d'affichage, donc je ne me soucie vraiment pas de la progrès ...
Quelqu'un avec un autre design que celui que j'ai inventé? (En utilisant les fils, les processus, GLOBALS etc.)
Il doit y avoir quelque part une conception qui fait cela CLEANY de travail, je pense :-)
Dieu J'aime la syntaxe intégrée !! Je ne savais pas à ce sujet, le rend tellement plus propre à mes yeux :-) merci !! – attwad