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 :

Script plante avec plusieurs threads


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut Script plante avec plusieurs threads
    Bonjour,

    J'ai un problème avec mon script qui utilise les threads. Dès que j'exécute plus de un thread, les threads font tout leur boulot correctement, mais une fois fini, le programme plante et je se suis obligé de le killer car je ne peux pas récupérer ma console. D'après les tests que j'ai pu effectué, c'est dès lors que le premier thread a terminé, que le programme plante. Et la je n'arrive vraiment pas à comprendre le problème.

    Voici mon code pour plus de détails:

    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
    35
    36
     
    class analyse(Thread):
            def __init__(self):
                    Thread.__init__(self)
     
            def run(self):
                    while len(PORT) != 0:
                            i = PORT.pop()
                            snmp_in = os.popen("snmpget -v 2c -c **** " + i[1] + " IF-MIB::ifInUcastPkts." + str(i[0]))
                            for a in snmp_in:
                                    ucast_in = re.search(match, a).group()
                            snmp_out = os.popen("snmpget -v 2c -c **** " + i[1] + " IF-MIB::ifOutUcastPkts." + str(i[0]))
                            for a in snmp_out:
                                    ucast_out = re.search(match, a).group()
                            id_port = str(i[2])
                            con1.query("INSERT INTO traffic VALUES ('" + id_port + "', current_timestamp, '" + ucast_in + "', '" + ucast_out + "')" )
                            print i
                            print " OK"
                            print len(PORT)
                    print "FIN"
     
    con1 = pg.connect(****)
    PORT = con1.query("SELECT ifIndex, ip, switch_port.id FROM switch_port, switch WHERE switch_port.id_switch = switch.id;").getresult()
    match = re.compile('(?<=Counter32:\s)\d+$')
    # Permet de choisir le nombre de threads à créer
    x = 5
    getlist = []
    for i in range(0,x):
            current = analyse()
            getlist.append(current)
            current.start()
     
    for proc in getlist:
            proc.join()
     
    sys.exit(0)
    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Suite aux nouveaux tests effectués, le problème viendrait de la requête SQL dans le run. Mais je ne comprends toujours pas pourquoi

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 43
    Points
    43
    Par défaut
    Bon je continue mon monoloque

    J'ai réussi à régler le problème. Pour ceux que ca intéresse, le module pygresql ne supporte pas les threads, et c'est donc pour cela que le programme planté. J'ai donc mis en place le module DBUtils qui permet d'établir des connexions persistantes par thread avec la base de données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script perl avec plusieurs .htpasswd
    Par chills dans le forum Web
    Réponses: 0
    Dernier message: 11/03/2011, 17h22
  2. [Toutes versions] Scripting Dictionary avec plusieurs descendants
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2009, 11h41
  3. créer un script avec plusieurs fonctions
    Par kimi33 dans le forum Oracle
    Réponses: 3
    Dernier message: 15/01/2008, 17h03
  4. démarrer mysql avec plusieurs threads
    Par nocrack dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/10/2007, 16h03
  5. conflits avec plusieurs thread ?
    Par ac/dc dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/04/2007, 20h47

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