Am Dienstag 28 Juni 2011, 21:10:46 schrieb Hans-Peter Jansen:
On Tuesday 28 June 2011, 16:25:04 Florian Lindner wrote:
Am Dienstag 21 Juni 2011, 04:40:41 schrieb Alexander Schlarb:
Du könntest auch einfach bei dem Funktionsparameter popen_args ein Sternchen davor machen:
def popen_callback(on_exit, *popen_args): ----------------------------^
Python interpretiert das dann als wirf den ganzen Rest bitte in diese Liste.
Noch besser wäre es wenn du dahinter dann noch **popen_kwargs setzt
und an Popen übergibst: Wunderbar, danke! Habe es jetzt so umgesetzt. Siehst Du eigentlich eine Möglichkeit, wie man den Code so formulieren kann, dass ich anstelle des Thread() Objektes ein Popen() Objekt zurückgeben kann?
Hmm, ich habe hier eine Lösung, von der ich nicht genau weiss, ob sie zu Deinem Problem passt, aber mal reinschauen kostet ja nichts (ausser ein paar Kalorien ;):
http://micheles.googlecode.com/hg/decorator/documentation.html#async
Das Modul mit den async decorator schaut schon sehr attraktiv aus. Allerdings habe ich noch ein Problem bei der Benutzung: 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 In [13]: @async(on_success=os) ....: def add(b): ....: return b+2 ....: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/florian/SA/src/<ipython console> in <module>() TypeError: __call__() takes at least 2 arguments (2 given) Einige andere Aufrufkonventionen haben bei mir ebenfalls nicht zum Erfolg geführt. Siehst Du, wie es richtig geht? Danke & Grüße, Florian