Bonjour,
Je débute en Python, je garde sûrement mes réflexes d'autres langages notamment le C. Et j'ai un soucis pour passer une référence en paramètre à la fonction qui sera exécutée par un thread. Voici des extraits de mon code :
A l'exécution, j'ai une erreur :
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 # Variables globales BUF_NIVEAU_0 = [0] # Fonction de consommation du buffer def consommateur_niveau_i(buffer): while len(buffer) != 0: print "Consommer une matrice ?" raw_input() print "On a lu la matrice : {}".format(buffer.pop(0)) # Script principal consommateur = threading.Thread(None, consommateur_niveau_i, None, {BUF_NIVEAU_0,}, None) consommateur.start()
Pourtant, si dans le main, je mets uniquement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Traceback (most recent call last): File "/Users/pierregradot/Dropbox/Projets/Python Matrices/generateur_matrices.py", line 140, in <module> consommateur = threading.Thread(None, consommateur_niveau_i, None, {BUF_NIVEAU_0,}, None) TypeError: unhashable type: 'list'
, ça marche très bien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 print "Avant : ", BUF_NIVEAU_0 consommateur_niveau_i(BUF_NIVEAU_0) print "Apres : ", BUF_NIVEAU_0
Comment modifier la création du thread pour que ça marche svp ?
Partager