controler la reussite/echec/timeout d'une commande subprocess.Popen avec python

a marqué ce sujet comme résolu.
Auteur du sujet

Salut,

comment je détecte la fin d’une commande (si possible en découvrant si elle est réussie / echouée / timeout ) en python via subprocess.Popen.

cas de figure : youtube-dl ; nmap ; grep

Même question en cas de threads.

Édité par buffalo974

+0 -0

comment je détecte la fin d’une commande (si possible en découvrant si elle est réussie / echouée / timeout ) en python via subprocess.Popen.

buffalo974

Avec la méthode wait des objets Popen (ou poll suivant ce que tu veux faire). Tu peux aussi utiliser subprocess.run plutôt que Popen.

Je n’ai pas compris la question sur les threads.

pour youtube-dl les grosses videos sont longues a dl si la qualité est élevée.

dans le cadre d’un usage avec nmap on peux aller plus vite pour scanner un reseau ainsi, n’est-ce pas ?

buffalo974

Pour télécharger pleins de vidéos YouTube avec youtube-dl, tu peux y aller en une commande directement, peut-être en combinant avec une autre commande comme xargs ou parallel (GNU Parallel) ? Tu peux paralléliser autant de processus que tu veux, ta limite en ce qui concerne le gain de temps sera ici le plus petit entre ta bande passante et celle que YouTube aura décidé de t’allouer au total.

Pour nmap, je ne sais pas exactement ce que tu veux faire, mais cet outil propose déjà des options pour optimiser sa performance en parallélisant certains traitements etc.

+0 -0

Je ne vois pas dans quelle mesure les threads te feraient gagner du temps ici. Tu lances des sous-processus, qui sont donc déjà exécutés en parallèle si ton processeur le permet.

entwanne

Suprocess.run est bloquant, tu ne peux pas en lancer plusieurs en même temps dans la même instance de l’interpréteur Python sans faire de threads (ou lancer un sous processus qui en lance lui même plusieurs).

Édité par adri1

I don’t mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0

Suprocess.run est bloquant, tu ne peux pas en lancer plusieurs en même temps dans la même instance de l’interpréteur Python sans faire de threads (ou lancer un sous processus qui en lance lui même plusieurs).

adri1

Mais il dit utiliser subprocess.Popen, qui n’est pas bloquant.

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte