Accueil » Python » Forums Python » Forum général Python » Aide sur les Threading

 • Aide sur les Threading

Document Actions
Réponses: 4   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

 • Aide sur les Threading

Posté par Estopa le 07/05/2008 01:43
Bonsoir,

Je suis en train d'essayer d'afficher en temps réel l'avancer d'un telechargement en utilisant un thread.
Mon probleme est que il n'afficher que le dernier bloc donc cela laisse penser il que n'actualise que le label une fois fini.

Voici ce qui appel le thread :

je lui passe en premier le liens du fichier, en 2eme le nom du fichier et en troisieme mon label.

t = DonwloadFile(self.url[0],"/tmp/fichier",self["info2"])
t.start()

et voici la class :

class DonwloadFile (threading.Thread) :
def __init__(self,url,fichier,label) :
threading.Thread.__init__(self)
self.url = _a
self.fichier = _b
self.label = label
self.run()
def run(self) :
urllib.urlretrieve(self.url,self.fichier,reporthook = self.onHook)
def onHook(self,nb_blocs, taille_bloc, taille_fichier):
self.label.setText(str(taille_fichier) + " - " + str(nb_blocs) + " - " + str(taille_bloc))


merci d'avance pour votre aide

grin Re: Aide sur les Threading

Posté par Estopa le 07/05/2008 01:55
petite erreur de ma part en rectifiant le code pour le poste :D
Rectifier cela donne :

Voici ce qui appel le thread :

je lui passe en premier le liens du fichier, en 2eme le nom du fichier et en troisieme mon label.

t = DonwloadFile(self.url[0],"/tmp/fichier",self["info2"])
t.start()

et voici la class :

class DonwloadFile (threading.Thread) :
def __init__(self,url,fichier,label) :
threading.Thread.__init__(self)
self.url = url
self.fichier = fichier
self.label = label
self.run()
def run(self) :
urllib.urlretrieve(self.url,self.fichier,
reporthook = self.onHook)
def onHook(self,nb_blocs, taille_bloc, taille_fichier):
self.label.setText(str(taille_fichier) + " - " + str(nb_blocs) + " - " + str(taille_bloc))

 • Re: Aide sur les Threading

Posté par Estopa le 07/05/2008 02:16
Bon en regardant de plus pres je me suis rendu compte que je ne doit pas appeller le def run and le def __init__ mais juste utilise le start seulement le telechargement ne se fait pas il rentre bien dans le run mais aucun fichier n0est telecharger.

 • Re: Aide sur les Threading

Posté par batmeh le 07/05/2008 10:10
j'ai déjà été confronté à ce type de problème.
En java, on utilise le pattern "swing worker". En googlant un peu j'ai trouvé un pattern qui y ressemble en python:
http://evanjones.ca/software/python-workqueue.html
j'espère que ça va t'aider.

 • Re: Aide sur les Threading

Posté par Estopa le 07/05/2008 15:08
Ouf cela me semble bien compliquer c'est quand meme bizarre ne depasse pas la ligne de telechargement j'ai ajouter avant et apres la ligne de telechargement une ecriture dans un fichier l'ecriture ne se produire uniquement avant.