Bonjour,
J'essaie de m'initier à la programmation multithreads, mais je me heurte à un problème pour partager une liste d'objets entre plusieurs threads.
J'ai lu dans la documentation qu'on pouvait utiliser un Manager pour contenir des objets qui pourront être manipulés par plusieurs processus.
http://docs.python.org/library/multi...ween-processes
Quand je crée une liste avec Manager.list(), et que j'y insère des entiers, tout se passe bien (comme dans l'exemple donné dans la doc).
Mais quand la liste contient des instances d'une classe que j'ai écrite, ça ne marche pas.
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 from multiprocessing import Process, Manager class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart m = Manager() l = m.list() x = Complex(3.0, -4.5) l.append(x)
Je ne comprends pas cette erreur, et vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 2, in append File "/usr/lib/python2.6/multiprocessing/managers.py", line 740, in _callmethod raise convert_to_error(kind, result) multiprocessing.managers.RemoteError: --------------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python2.6/multiprocessing/managers.py", line 214, in serve_client request = recv() AttributeError: 'module' object has no attribute 'Complex' ---------------------------------------------------------------------------
Est-ce que cela veut dire qu'on ne peut pas utiliser d'objets dans une liste gérée par un multiprocessing.Manager ?
Une telle limitation m'étonnerait...
Partager