Python et les Threads

Résolu/Fermé
Utilisateur anonyme - Modifié par DJ Fire-Black le 31/03/2011 à 14:07
 Utilisateur anonyme - 1 avril 2011 à 10:32
Salut,

J'envisage de créer une nouvelle fonctionnalité pour un plugin pour un jeu.
Il se trouve que ce plugin doit accéder à internet, ce qui risque de stopper nette le jeu le temps que la connexion se passe (ce qui peut prendre quelques centisecondes, voir quelques secondes en cas de timeout).

Je pense donc devoir utiliser les Threads pour éviter de gêner le jeu.
Le problème, c'est que je m'y prend mal apparemment.

J'ai une erreur SyntaxError à la ligne def __init__(self, p):

Voici le code :

Import urllib, urllib2
from Threading import Thread  

class report(Thread):  
 def __init__(self, p)  
  Thread.__init__(self)  
  self.p = p  
   
 def run(self)  
  p = self.p  
  url = 'mon_url'  
  values = {'i':str(p['info1']), 'l':str(p['info2'])}  
  data = urllib.urlencode(values)  
  req = urllib2.Request(url, data)  
  f = urllib2.urlopen(req)  

p = {}  
p['info1'] = "Test"  
p['info2'] = "Test2"  
report(p)


Quelqu'un pourrait me dire ce qui ne va pas s'il vous plait ?
Merci d'avance.

Musicalement,
DJ Fire-Bl@ck.

1 réponse

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
1 avril 2011 à 09:49
def run(self)  

est incorrect: il faut mettre deux points après:


def run(self):  
1
Merci beaucoup.
Tu vas peut être rire mais j'avais deux threads à faire. Quand j'ai fait le 2ème, j'ai commis la même erreur ... je crois que je vais aller me coucher. ;)

Désolé de t'avoir fait déplacé pour ça :S. Bonne journée !

Edit :
Script corrigé :

Import urllib, urllib2
from Threading import Thread  

class report(Thread):  
 def __init__(self, p) :
  Thread.__init__(self)  
  self.p = p 
  self.run()
   
 def run(self) :
  p = self.p  
  url = 'mon_url'  
  values = {'i':str(p['info1']), 'l':str(p['info2'])}  
  data = urllib.urlencode(values)  
  req = urllib2.Request(url, data)  
  f = urllib2.urlopen(req)  

p = {}  
p['info1'] = "Test"  
p['info2'] = "Test2"  
report(p)
0