質問

並列Python 中に何かが入っています 提出する と呼ばれる関数 折り返し電話 (ドキュメンテーション)しかし、それはあまりうまく説明されていないようです。数日前にフォーラムに投稿しましたが、返答がありませんでした。誰かがコールバックとは何か、そしてそれが何に使用されるかを説明してくれませんか?

ありがとう。

役に立ちましたか?

解決

コールバックは、API のコンシューマーによって提供される関数であり、API はこの関数を呼び出して呼び出す (コールバックする) ことができます。医師の予約を設定した場合、私の電話番号を伝えることができるので、前日に予約を確認するために電話してもらうことができます。コールバックはそれに似ていますが、単なる電話番号ではなく、「このアドレスにメールを送って、秘書に電話してカレンダーに入れてもらう」などの任意の指示になることもあります。

コールバックは、アクションが非同期である状況でよく使用されます。関数を呼び出してすぐに作業を続行する必要がある場合、関数の戻り値で何が起こったのかを知るのを座って待つことはできないため、コールバックを提供します。関数の非同期作業が完全に完了すると、関数はいくつかの事前定義された引数 (通常は指定した引数と、要求した非同期アクションのステータスと結果に関する引数) を使用してコールバックを呼び出します。

もしDr.彼が外出中であるか、彼らはまだスケジュールに取り組んでいます。彼が戻ってくるまで(数時間かかる場合もあります)私を待たせるのではなく、電話を切り、約束が設定されたら電話をかけてきます。

この特定のケースでは、Parallel Python の submit 関数は、指定した引数とその結果を使用してコールバックを呼び出します。 func, 、 一度 func 実行が終了しました。

他のヒント

ドキュメント内の関連箇所:

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

したがって、結果の準備ができたらすぐにコードを実行したい場合は、そのコードを関数に入れて、その関数を callback 口論。他の引数が必要ない場合は、次のようにします。

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

詳細については、 callback Python のパターン、例を参照してください。私のプレゼンテーション ここ.

リンクを見ると、呼び出されるフックのように見えます。

callback - コールバック関数 引数付きで呼び出されます list は callbackargs+(result,) と等しい 計算が終わり次第

「計算が完了したらすぐに」というのは曖昧なようです。私がこの件について見る限り、重要なのは、 submit() 呼び出しは作業を他のサーバーに分散してから戻ります。仕上げは非同期であり、むしろブロックであるため、ある作業単位が終了したときに呼び出される関数を提供できます。もし、するなら:

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

その後、送信すると確実になります work_finished() ターゲットサーバー上で分散作業の単位が完了すると呼び出されます。

電話をかけるとき submit() を提供できます 折り返し電話 これは呼び出し元と同じランタイムで呼び出されます。 submit() ...ワークロード関数の分散が完了した後に呼び出されます。

「submit() で何かを行ったときに foo(x,y) を呼び出す」ようなものです。

しかし、はい、ドキュメントはもっと良くなる可能性があります。Ppython ソースを調べて、どの時点でコールバックが呼び出されているかを確認してください。 submit()

折り返し電話 は、ユーザーが定義した関数で、後でユーザーが呼び出す関数によって呼び出されます。

例として、AJAX がどのように動作するかを考えてみましょう。バックエンドサーバー関数を呼び出すコードを作成します。将来のある時点で、その関数から戻ります (「A」は非同期を表し、これが「Parallel Python」の「Parallel」の意味です)。ここで、コードはサーバー上のコードを呼び出すため、コードが完了したことをサーバーに通知し、その結果に対して何かを実行したいと考えています。これは、あなたの コールバック関数.

呼び出された関数が完了したら、その完了を通知する標準的な方法は、コード内で関数を呼び出すように指示することです。これがコールバック関数であり、その仕事は、呼び出した下位レベルの関数からの結果/出力を処理することです。

コールバックは単なる関数です。Python では、関数は単なるオブジェクトであるため、次のように関数の名前を変数として使用できます。

def func():
    ...

something(func)

コールバックを引数として受け入れる多くの関数は、通常、コールバックが特定の引数を受け入れる必要があることに注意してください。この場合、コールバック関数は callbackargs で指定された引数のリストを受け入れる必要があります。私は Parallel Python に詳しくないので、それが何を望んでいるのか正確にはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top