Bonjour à tous,
En partant d'exemples tirés de "Python essential reference" de Beazley, je tache de modifier un dictionnaire, membre d'une classe via des Process lancés depuis cette même classe et...une usine à gaz.
Le Trace back est tout à fait cryptique pour moi et j'aurais besoin d'une traduction "pour les nuls".
Dans le cas improbable où le code ne produirait pas d'erreur, voici un extrait du trace back:
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #!/usr/bin/python # *-* coding UTF-8 *-* from multiprocessing import Process, JoinableQueue, Lock , Manager class QTest(): def __init__(self): self.m=Manager() self.l1=Lock() self.l2=Lock() self.l3=Lock() self.dl={'a':self.l1,'b':self.l2,'c':self.l3,'d':self.l1,'e':self.l2,'f':self.l3,'g':self.l1,'h':self.l2,'i':self.l3,'j':self.l1} self.d=self.m.dict() self.q=JoinableQueue() self.cons1=Process(target=self.consumer,args=(self.q,)) self.cons1.deamon=True self.cons2=Process(target=self.consumer,args=(self.q,)) self.cons2.deamon=True self.prod=Process(target=self.producer,args=(['a','b','c','d','e','f','g','h','i','j'],self.q)) self.prod.deamon=True self.cons1.start() self.cons2.start() self.prod.start() self.q.join() def consumer(self,iq): while True: item=iq.get() if item is None: break self.dl[item].acquire() self.d[item]="done" self.dl[item].release() iq.task_done() print "consumer done" print self.d def producer(self,seq,oq): for item in seq: oq.put(item) oq.put(None) oq.put(None) if __name__=='__main__': qt=QTest()
Process Process-3:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "./T3.py", line 34, in consumer
self.d[item]="done"
File "<string>", line 2, in __setitem__
File "/usr/lib/python2.6/multiprocessing/managers.py", line 722, in _callmethod
self._connect()
File "/usr/lib/python2.6/multiprocessing/managers.py", line 709, in _connect
conn = self._Client(self._token.address, authkey=self._authkey)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 143, in Client
c = SocketClient(address)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 263, in SocketClient
s.connect(address)
File "<string>", line 1, in connect
error: [Errno 2] No such file or directory
Partager