J'aimerais utiliser le module de sous-processus de la manière suivante :
- créer un nouveau processus dont l'exécution peut prendre beaucoup de temps.
- capture
stdout
(oustderr
ou potentiellement les deux, ensemble ou séparément) - Traiter les données du sous-processus à mesure qu'il entre, peut-être en déclenchant des événements pour chaque ligne reçue (en wxPython par exemple) ou simplement en les imprimant pour le moment.
J'ai créé des processus avec Popen, mais si j'utilise communicate(), les données me parviennent en une seule fois, une fois le processus terminé.
Si je crée un thread séparé qui fait un blocage readline()
de myprocess.stdout
(en utilisant stdout = subprocess.PIPE
) Je n'obtiens pas non plus de lignes avec cette méthode, jusqu'à ce que le processus se termine. (peu importe ce que j'ai défini comme bufsize)
Existe-t-il un moyen de gérer ce problème qui ne soit pas épouvantable et qui fonctionne bien sur plusieurs plateformes ?