Frage

Parallel Python es etwas in der hat einreichen Funktion a genannt Rückruf ( Dokumentation ) aber es scheint nicht zu erklären zu gut es. Ich habe vor auf ihrem Forum ein paar Tage gebucht und ich habe keine Antwort erhalten. Würde jemand erklären, was ein Rückruf ist und was es verwendet?

Danke.

War es hilfreich?

Lösung

Ein Rückruf ist eine Funktion, die durch die Verbraucher einer API zur Verfügung gestellt, dass die API kann dann umdrehen und invoke (Sie wieder anrufen). Wenn ich ein Setup einen Termin beim Dr., kann ich ihnen meine Telefonnummer geben, damit sie mir den Tag nennen kann, bevor die Bestellung zu bestätigen. Ein Rückruf wie das ist, mit der Ausnahme, anstatt nur eine Telefonnummer ist, kann es beliebige Befehle wie „mir eine E-Mail an diese Adresse senden, und auch meine Sekretärin anrufen und sie es ausdrückte in meinem Kalender.

Rückrufe werden häufig in Situationen, in denen eine Aktion asynchron ist. Wenn Sie eine Funktion aufrufen müssen, und sofort weiterarbeiten, können Sie nicht sitzen dort für den Rückgabewert warten, damit Sie wissen, was passiert ist, so dass Sie einen Rückruf zur Verfügung stellen. Wenn die Funktion vollständig seine asynchrone Arbeit wird es dann invoke Ihren Rückruf mit einigen vorgegebenen Argumenten (in der Regel einige, die Sie liefern, und einige über den Status und das Ergebnis der asynchronen Aktion angefordert).

Wenn die Dr. des Büros ist aus, oder sie arbeiten immer noch auf dem Programm, anstatt mich in die Warteschleife warten, bis er zurückkommt, die mehrere Stunden sein könnte, hängen wir auf, und sobald der Termin wurde geplant, sie rufen sie mich an.

In diesem speziellen Fall einreichen Parallel Python-Funktion wird Ihren Rückruf mit irgendwelchen Argumenten aufrufen Sie liefern und das Ergebnis der func, einmal func beendet ausgeführt wird.

Andere Tipps

Die entsprechende Stelle in der Dokumentation:

callback - callback function which will be called with argument 
        list equal to callbackargs+(result,) 
        as soon as calculation is done
callbackargs - additional arguments for callback function

Also, wenn Sie einige Code wollen so schnell ausgeführt werden, da das Ergebnis fertig ist, setzen Sie diesen Code in eine Funktion und übergeben Sie diese Funktion als callback Argument. Wenn Sie keine anderen Argumente benötigen, wird es nur, z.

def itsdone(result):
  print "Done! result=%r" % (result,)
...
submit(..., callback=itsdone)

Für mehr auf dem callback Muster in Python, siehe z.B. meine Präsentation hier .

auf den Link Sehen, sieht aus wie ein Haken, der genannt wird.

  

Rückruf - Callback-Funktion des   wird mit dem Argument aufgerufen werden           Liste gleich zu callbackargs + (Ergebnis)           sobald Berechnung erfolgt

Die „sobald Berechnung erfolgt“ Bit scheint eindeutig. Der Punkt, soweit ich von dieser Sache sehen kann, ist, dass die submit() Anruf Arbeit an andere Server verteilt und dann kehrt zurück. Da die Weiterverarbeitung asynchron ist, sondern blockieren, ermöglicht es Ihnen, eine Funktion bereitzustellen, die, wenn einige Arbeitseinheit beendet genannt wird. Wenn Sie das tun:

submit( ..., callback=work_finished, ... )

Dann wird sichergestellt, einreichen work_finished() aufgerufen wird, wenn das Gerät von verteilten Arbeit auf dem Zielserver abgeschlossen ist.

Wenn Sie submit() aufrufen können Sie eine Rückruf zur Verfügung stellen, die in der gleichen Laufzeit wie der Aufrufer von submit() genannt wird ... und es wird aufgerufen, nachdem die Verteilung der Workload-Funktion abgeschlossen ist.

Ein bisschen wie "Call foo (x, y), wenn Sie ein paar Sachen getan haben in submit ()"

Aber ja, könnte die Dokumentation besser sein. Haben Sie eine ganders an der ppython Quelle und sehen, an welcher Stelle der Rückruf in submit() genannt wird

Rückruf ist eine Funktion legen Sie fest, dass die später durch eine Funktion namens rufen Sie an.

Als Beispiel betrachten, wie AJAX funktioniert: Sie Code schreiben, das eine Back-End-Server-Funktion aufruft. An einem gewissen Punkt in der Zukunft, gibt es von dieser Funktion (die „A“ steht für Asynchronous, das ist das, was die „Parallel“ in „Python Parallel“ dreht sich alles um). Nun - da der Code den Code auf dem Server aufruft, möchten Sie es Ihnen sagen, wenn es fertig ist, und Sie wollen etwas mit seinen Ergebnissen zu tun. Er tut dies durch den Aufruf der Callback-Funktion .

Wenn die aufgerufene Funktion beendet hat, der normale Weg, es Ihnen zu sagen, es fertig ist für Sie es zu sagen, eine Funktion in Ihrem Code aufrufen. Das ist die Callback-Funktion, und seine Aufgabe ist es, die Ergebnisse / Ausgabe von der unteren Ebene Funktion, die Sie genannt haben, zu behandeln.

Ein Rückruf ist einfach eine Funktion. In Python-Funktionen sind nur mehr Objekte, und so der Name einer Funktion kann als Variable verwendet werden, etwa so:

def func():
    ...

something(func)

Beachten Sie, dass viele Funktionen, die in der Regel einen Rückruf als Argument akzeptieren verlangen, dass der Rückruf bestimmte Argumente akzeptieren. In diesem Fall muß die Callback-Funktion eine Liste von Argumenten in callbackargs angegeben akzeptieren. Ich bin nicht mit Parallel Python vertraut, damit ich weiß nicht genau, was sie will.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top