IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Exécution segmenter d'une commande


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Exécution segmenter d'une commande
    Bonjour j'aimerait réaliser un programme qui lance un commande qui établie un time.sleep(5) puis ensuite qui récupère une première fois le résultat qui a été développer par la commande sans que celle ci soit arrêter par la suite la récupération du flux stdin doit s'établir tout les time.sleep(1) !

    Le programme que je développe doit prendre en compte de l'évolution du second programme , ce doit être quelque chose en Temp réel !

    Merci de votre compréhension !
    Cordialement ,
    Sefesfe

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    Tout d'abord, time.sleep(x) est bloquant. Donc, sous réserve de détails de ton code, je pense que ce n'est pas ce qu'il te faut.

    Qu'est-ce que ton code qui doit tourner en second plan ? tu parles de stdin, c'est un subprocess ?

    Avec subprocess il y a des solutions pour gérer les temps de réponse-execution.

    Mais faudra nous en dire un peu plus.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Il y a grosso modo trois approches possibles:
    - Des threads (nécessite de locker en cas d'accès concurrents) : le thread principal essaye d'obtenir des données toutes les secondes, tandis que le thread auxiliaire met à jour les donnée
    - Des processus (nécessite de les faire communiquer). A priori peu adapté à ton problème car il faudra faire transiter les données entre les processus
    - De l'asynchrone, ou l'on découpe les taches en unité d'éxécution élémentaire auxquelles on donne successivement la main (cf la bibliothèque Twisted par exemple).

    Dans ton cas, le threading me semble le plus simple. Voici un exemple dont tu pourra t'inspirer. Ici, je traite le cas ou on attends que la Tache_Lourde aie fini. Tu aura besoin d'un peu plus pour faire communiquer les thread dans ton cas (surement une queue qui te permettra de stocker les résultats successifs de Tache_Lourde dans un contexte threadé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    def Tache_Lourde(shared_memory):
        """ Utilise une liste pour prévenir le thread surveillant que c'est fini """
        result= traitement() # la tache que tu veux faire
        shared_memory[0]= result
     
    def Surveiller():
        shared_memory= []
        threading.Thread(target= lambda: Tache_Lourde(shared_memory)).start()
        time.sleep(5)
        while not(shared_memory):
            time.sleep(1)

Discussions similaires

  1. Exécution périodique d'une commande
    Par n_zerrouki dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 05/05/2014, 09h47
  2. Peut-on exécuter/invoquer/appeler une commande readline non liée du bash?
    Par jack-ft dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 20/10/2013, 18h29
  3. segmentation fault quand j'exécute une commande java (sablevm)
    Par kris1 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 13/03/2008, 15h21
  4. Réponses: 7
    Dernier message: 05/10/2005, 18h06
  5. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 20/07/2005, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo