Voici un petit exemple tout simple pour mettre en oeuvre les threads.
Mais je ne comprends pas pourquoi le résultat dans la console est aussi bordélique.
Le flush était une tentative désespérée pour caler proprement les retours à la ligne.
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
37
38
39
40
41 from threading import Thread from threading import Lock import sys G = 0 class MyPrinter (Thread): def __init__ (self,txt, nbr): Thread.__init__(self) self.txt = txt self.nbr = nbr def run (self): global G for i in range(self.nbr): lock = Lock() lock.acquire(0) try: G = G+1 print "%s_%i" % (self.txt, G) sys.stdout.flush() finally: lock.release() ThreadA = MyPrinter ("AAA",10) ThreadA.start() ThreadB = MyPrinter ("BBB",10) ThreadB.start() print "\nTheEnd\n" ThreadA.join() ThreadB.join() print "\nTheRealEnd\n"
Quelqu'un a-t-il une solution ?
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 AAA_1 AAA_2BBB_3 TheEnd BBB_4AAA_5 AAA_6 AAA_7BBB_8 AAA_9 AAA_10BBB_11 AAA_12BBB_13 BBB_14 AAA_15 BBB_16 AAA_17 BBB_18 BBB_19 BBB_20 TheRealEnd
Partager