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 : 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()
A l'exécution, j'ai une erreur :
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'
Pourtant, si dans le main, je mets uniquement :
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
, ça marche très bien...

Comment modifier la création du thread pour que ça marche svp ?