[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