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:
Merci d'avance
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)![]()
Partager