Bonjour,

Je suis en train de tester le threading sur python, et je rencontre quelque difficultés. Mon test est simple:

Je voudrai qu'un thread fasse des insertions dans une base pendant que mon programme principal affiche ce qui a été introduit.

Voilà en gros le code que je teste (j'ai viré toute la partie bdd car ça fonctionne bien sur cette partie).

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
#!/usr/bin/env python
 
import sys
import os
import subprocess
import re
import signal
import MySQLdb
import threading
import multiprocessing
import time
 
class Affiche2(threading.Thread):
        def __init__(self, nom = ''):
                threading.Thread.__init__(self)
                self.nom = nom
                self._stopevent = threading.Event( )
        def run(self):
                ''' FAIS DES INSERTIONS EN BASE '''
        def stop(self):
                self._stopevent.set( )
 
''' main '''
''' appelle la fonction de connexion '''
conn = connectDB()
 
print "Daemon ready to work"
 
c = Affiche2('Thread C')
c.start()
time.sleep(6.5)
c.stop()
 
while (1):
     ''' FAIS DES SELECT ET AFFICHE LE RESULTAT '''
Voilà ce que ça donne en gros. Le prob est que quand le thread démarre, il ne rend pas la main tant que les insertions ne sont pas terminés. or je voudrai le faire tourner en parallèle du programme principal.

Auriez-vous une piste à me filer ?