Thread et variables globales
Bonjour,
un nouveau problème sur la route de l'apprentissage du Python... un problème de Variable Globale...
Mon problème est le suivant, dans fichier_thread.py : pas de soucis 'VarGlobal' prend bien la valeur qui lui est attribué dans la thread, par contre quand je veux le lancer à partir de test.py, à ce moment là, VarGlobal ne prend pas la valeur que lui donne la thread, pourquoi ? Et comment résoudre ce problème ?
Ces deux fichiers illustrent mon problème :
Fichier : fichier_thread.py
Code:
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
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
from threading import Thread
from time import sleep
class ma_thread(Thread):
def __init__(self):
self.i = 0
self.Stop = False
Thread.__init__(self)
def run(self):
print "[Démarrage de la thread]"
global VarGlobal
while not self.Stop:
self.i += 1
VarGlobal = self.i
sleep(0.5)
print "[Fin de la thread]"
def stop(self):
self.Stop = True
if __name__ == '__main__':
VarGlobal = "0"
print "VarGlobal initiale:", VarGlobal
Th = ma_thread()
Th.start()
sleep(1.0)
print "VarGlobal pendant le fonctionnement de la thread:", VarGlobal
Th.stop()
sleep(1.0)
print "VarGlobal finale:", VarGlobal |
Fichier : test.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
from time import sleep
from fichier_thread import ma_thread
if __name__ == '__main__':
VarGlobal = "0"
print "VarGlobal initiale:", VarGlobal
Th = ma_thread()
Th.start()
sleep(1.0)
print "VarGlobal pendant le fonctionnement de la thread:", VarGlobal
Th.stop()
sleep(1.0)
print "VarGlobal finale:", VarGlobal |
Merci d'avance...