Ich bin mir immer beim OO nicht so ganz sicher wer auf was zugreift und wie ich dann das Objekt oder die Instanz übergebe, wenn ich dann eine Methode parallelisieren möchte.
Hier mal ein Minimalbeispiel wie ich es mir gedacht habe, dass es funktionieren könnte (was es nicht tut):
Code: Alles auswählen
import pp
class cl(object):
def __init__(self,a):
#irgendwelche zahlen
self.a = a
def int_func(self,x):
#irgendeine funktion,soll parallelisiert werden
return x**self.a
def func(self,y):
#ruft ein paar mal int_func auf,das soll parallel geschehen
j = pp.Server()
js = {}
r=0
#jobs creieren
for i in xrange(10):
js[repr(i)] = j.submit(self.int_func, (y,),(),())
#ergebnisse einfordern
for i in xrange(10):
print js[repr(i)]()
return r
b = cl(10)
print b.func(4)
Dann bekomme ich einen endlos langen Fehler (s.u.) wobei das Skript dann noch nicht mal abbricht, also eigentlich noch weiter läuft - ohne etwas zu machen. Auch die Übergabe von 'cl' als Modul oder 'b' als Instanzname hilft da nicht. Ich bin mir sicher dass das irgendwie geht und dass es wahrscheinlich alle wissen außer mir.
Fatal error has occured during the function execution
Traceback (most recent call last):
File "C:\progra~1\Python25\lib\site-packages\ppworker.py", line 91, in run
args = pickle.loads(s)
AttributeError: 'module' object has no attribute 'cl'
None
Fatal error has occured during the function execution
Traceback (most recent call last):
File "C:\progra~1\Python25\lib\site-packages\ppworker.py", line 91, in run
args = pickle.loads(s)
AttributeError: 'module' object has no attribute 'cl'
None
Traceback (most recent call last):
File "C:\Program Files\Python25\Lib\site-packages\pp.py", line 485, in __run
worker.t.csend(sfunc)
File "C:\Program Files\Python25\Lib\site-packages\pptransport.py", line 64, in
csend
self.send("H" + hash1)
File "C:\Program Files\Python25\Lib\site-packages\pptransport.py", line 91, in
send
self.w.write(str(len(msg))+"\n")
IOError: [Errno 22] Invalid argument
Unhandled exception in thread started by
Traceback (most recent call last):
File "C:\Program Files\Python25\Lib\site-packages\pp.py", line 496, in __run
job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment
Traceback (most recent call last):
File "C:\Program Files\Python25\Lib\site-packages\pp.py", line 487, in __run
sresult = worker.t.receive()
File "C:\Program Files\Python25\Lib\site-packages\pptransport.py", line 97, in
receive
msg_len = int(s)
ValueError: invalid literal for int() with base 10: ''
Unhandled exception in thread started by
Traceback (most recent call last):
File "C:\Program Files\Python25\Lib\site-packages\pp.py", line 496, in __run
job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment