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 :

Processus, processus parent


Sujet :

Python

  1. #1
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut Processus, processus parent
    Bonsoir,

    Je suis en train de tester le comportement d'un script qui permet de connecter un client à un jeu vidéo réseau (qui tourne pour l'instant sur localhost). Selon les arguments que je fournis au script, il s'agira soit du 1er soit du 2nd client.

    Lorsque j'execute le script (que ce soit depuis Windows ou depuis Eclipse) deux fois, en changeant les arguments, tout fonctionne bien.

    Lorsque j'essaye de lancer les 2 scripts depuis Python, le réseau plante, et j'obtiens une erreur du type "une connexion distante a du etre fermée". J'utilise subprocess et le code suivant:
    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
     
    import time, threading, subprocess
     
    def lancerSubProcess(cmd, input=None, cwd=None, env=None):
        pipe =  subprocess.Popen(
                 cmd, shell=False, cwd=cwd, env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
               )   
    def lancer(name):   
        lancerSubProcess("python "+ name)    
     
    NAME= "scriptClientSimple.py"
    def start2clients():        
        print "starting 1st"
        lancer(NAME+ " 1")    
        time.sleep(5) # wait server creation
        print "starting 2nd"
        lancer(NAME + " 2")
     
    if __name__ == '__main__':
        start2clients()
        print "available"
    J'ai peut etre (surement!) fait une erreur sur l'implémentation de mon réseau et de mes clients, mais avant d'aller voir de ce coté-ci, je me demandais s le fait de lancer 2 subprocess depuis un script principal pouvait avoir un effet, par exemple si le lancement du 2nd process depuis le meme process parent pouvait être la source de ce bug.

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Difficile de t’aider sur l’erreur en question, vu le peu d’info que tu donnes…

    Par contre, normalement, subprocess est parfaitement capable de lancer plusieurs sous-processus en même temps, pas de problème de ce côté-là*!

  3. #3
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Merci mont29,

    Je me doute bien que subprocess peut lancer plusieurs process, mais je me demandais s'il etait complétement équivalent de
    - lancer deux process faisant appel au même script Python depuis 2 fichiers .bat distincts.
    - ou de les lancer depuis un unique script Python.

    Peut être le fait qu'il partage un processus parent dans le 2nd cas change quelque chose.

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    À mon avis, non, ça ne devrait avoir aucune conséquence sur ce plan là. Chaque processus est lancé dans son propre interpréteur Python, donc ils sont normalement parfaitement indépendants, hors le fait de pouvoir communiquer par des pipes…

    Pour rappel, sous Linux, tous les processus sont de toute façon descendants d’init, donc…

    Maintenant, je ne suis pas un spécialiste, hein, ce n’est que mon avis

Discussions similaires

  1. Mettre en veille le processus parent
    Par Eames38 dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2011, 12h37
  2. Réponses: 8
    Dernier message: 12/09/2010, 16h58
  3. Réponses: 3
    Dernier message: 21/02/2010, 19h06
  4. Réponses: 10
    Dernier message: 08/07/2009, 20h18
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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