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 :

Problème de thread en python


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut Problème de thread en python
    Bonjour,

    Voilà, je dois réaliser un projet avec interface graphique plus réseau, lorsque j'ai commencé le réseau je me suis très vite rendu compte de part mes recherches que je serai obligé d'utiliser des threads. J'ai donc décidé d'intégrer les threads, du coup je fais ma partie réseau sur deux threads sur le côté et mon interface en thread principal.

    Plus précisément lorsque je lance mon programme coté réseau, il crée une socket et l'envoie sur un premier thread qui attend la connexion d'un client, une fois le client connecté je crée une nouveau thread qui va s'occuper du dialogue entre le serveur et ce client.
    De l'autre coté je lance le client qui crée directement un thread qui lui crée une socket puis se connect.
    Une fois la connections établie le serveur envoie serveur ok au client qui lui répond client ok.

    Passons au problème maintenant.
    Je lance mon serveur via l'interface graphique, lorsque je clic sur le bouton, d'après l'affichage dans le terminal le programme bloc juste avant la création du thread. J'essaye de me connecter tout de même avec mon client mais la connexion échoue. Alors je décide de fermer mon interface côté serveur et la l'affichage en terminal se fait et m'indique qu'il est pré à recevoir une connections alors je lance le client et la connections se fait. Mais toujours pas de discutions entre les deux. Et enfin lorsque je ferme l'interface du client tout le dialogue s'affiche en terminal.

    J'espère que je me suis bien expliqué et que vous avez bien compris mon problème et surtout que vous allez pour voir y répondre. Si vous avez des questions qui pourrait vous aider à m'aider. Je suis là.

    Information complémentaire: je travail avec python 2.6 et Gtk+

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Cela ressemble à un problème de construction, donc difficile à dire sans code.
    Avez vous comparer votre code à celui de l'exemple de la doc Gtk pour les threads ?
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import threading
    import time
    import gobject
    import gtk
     
    gobject.threads_init()
     
    class MyThread(threading.Thread):
        def __init__(self, label):
            super(MyThread, self).__init__()
            self.label = label
            self.quit = False
     
        def update_label(self, counter):
            self.label.set_text("Counter: %i" % counter)
            return False
     
        def run(self):
            counter = 0
            while not self.quit:
                counter += 1
                gobject.idle_add(self.update_label, counter)
                time.sleep(0.1)
     
    w = gtk.Window()
    l = gtk.Label()
    w.add(l)
    w.show_all()
    w.connect("destroy", lambda _: gtk.main_quit())
    t = MyThread(l)
    t.start()
     
    gtk.main()
    t.quit = True
    Les threads sont ils indispensables ? N'est il pas possible d'utiliser gobject
    pour visiter votre code serveur/client à intervalle régulier ? Comprendre gobject.timeout_add(time, fonction) + return True
    dans ce sens c'est le gestionnaire d'évènement qui sert de thread.

    @+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Merci, de cette réponse, je vais regarder votre solution. Je reviens après.



    Voila, j'ai pu me rendre compte grâce à ça que je n'initialisais pas la socket au bonne endroit. Du coup maintenant il communique correctement.

    Mon problème suivant, se situe dans la communication entre le thread principal et les thread de gestion du réseau. Une fois que le client et le serveur ce sont dit bonjour il faut que je dise aux threads principales qu'ils peuvent construire le plateau de jeu.

    Sachant que mes threads de réseau prenne en paramètre le jeu. Je ne peux pas appeler directement la méthode car les ressources seraient prises dans le processus même, ce que je ne veux pas. Du coup je pense utiliser une Queue. Est ce une bonne idée? Et si oui comment puis-je procéder?

Discussions similaires

  1. Python, problème de threads
    Par Esperax dans le forum Programmation système
    Réponses: 0
    Dernier message: 29/05/2015, 21h27
  2. Problème Multi thread Python 3.2
    Par SmithC dans le forum Général Python
    Réponses: 5
    Dernier message: 03/05/2011, 10h48
  3. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57
  4. [MFC] Problème de Threads + Timers
    Par Invité dans le forum MFC
    Réponses: 8
    Dernier message: 30/11/2005, 10h51
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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