[Python-de] subprocess mit callback
Florian Lindner
mailinglists at xgm.de
Mo Jul 4 10:00:26 CEST 2011
Am Samstag 02 Juli 2011, 17:35:00 schrieb Stefan Schwarzer:
> Hallo Florian,
>
> On 2011-07-02 12:25, Florian Lindner wrote:
> > Am Dienstag 28 Juni 2011, 21:10:46 schrieb Hans-Peter Jansen:
> >> On Tuesday 28 June 2011, 16:25:04 Florian Lindner wrote:
> > async = Async(threading.Thread)
> >
> > In [7]: @async
> >
> > ...: def add(b):
> > ...: return b+2
> >
> > ...:
> > In [8]: add(4)
> > Out[8]: <Thread(add-1, stopped 139819357185792)>
> >
> > Das klappt soweit alles ganz gut. Wenn ich allerdings die callback
> > funktionen benutzen will, bekomme ich es nicht hin:
> >
> > In [9]: def os(result):
> > ...: print "Success", result
>
> ich würde eher davon abraten, eine Funktion so zu nennen wie
> ein häufig benutztes Modul aus der Standard-Bibliothek. Das
> kann leicht zu Verwirrung führen.
Klaro, das war so nur in die Shell gehackt.
> > TypeError: __call__() takes at least 2 arguments (2 given)
>
> Die Methode akzeptiert mindestens zwei Parameter, die du
> auch angegeben hast, aber du bekommst einen TypeError dazu?
> Hast du die Fehlermeldung richtig übernommen?
Ein komplettes Skript schaut jetzt so aus:
from common import Async
import threading
async = Async(threading.Thread)
def o_s(result):
print "Success: ", result
@async(on_success=o_s)
def add(x):
return x+2
res = add(2)
print res
und wenn es ausgeführt wird:
florian at horus ~/SA/src (git)-[master] % python2 test.py
Traceback (most recent call last):
File "test.py", line 9, in <module>
@async(on_success=o_s)
TypeError: __call__() takes at least 2 arguments (2 given)
Version von python ist 2.7.2. Wenn ich den Dekorator ohne Argumente benutze
funktioniert es, aber halt kein Callback.
Viele Grüße,
Florian
Mehr Informationen über die Mailingliste python-de