Référence à une liste en paramètre à un thread
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 :
Code:
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() |
A l'exécution, j'ai une erreur :
Code:
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' |
Pourtant, si dans le main, je mets uniquement :
Code:
1 2 3
| print "Avant : ", BUF_NIVEAU_0
consommateur_niveau_i(BUF_NIVEAU_0)
print "Apres : ", BUF_NIVEAU_0 |
, ça marche très bien...
Comment modifier la création du thread pour que ça marche svp ? :oops: