代码之家  ›  专栏  ›  技术社区  ›  Nope

并行Python:什么是回调?

  •  34
  • Nope  · 技术社区  · 17 年前

    在里面 Parallel Python 里面有东西 提交 函数称为 ( documentation )然而,它似乎不能很好地解释这一点。几天前我在他们的论坛上发了帖子,但还没有收到回复。有人能解释一下回调是什么以及它的用途吗?

    5 回复  |  直到 6 年前
        1
  •  236
  •   Logan Capaldo    17 年前

    回调是API的使用者提供的一个函数,API可以调用它(回调)。如果我安排了医生的预约,我可以给他们我的电话号码,这样他们就可以在前一天给我打电话确认预约。回拨是这样的,除了电话号码之外,它可以是任意的指令,比如“在这个地址给我发一封电子邮件,也可以打电话给我的秘书,让她把它放在我的日历上。”。

    如果医生不在办公室,或者他们仍在按计划工作,而不是让我等他回来(可能需要几个小时),我们会挂断电话,一旦预约安排好了,他们就会给我打电话。

    func 一旦 func 已完成执行。

        2
  •  19
  •   Alex Martelli    17 年前

    文档中的相关点:

    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)
    

    Python中的模式,请参见例如我的演示文稿 here .

        3
  •  4
  •   Aiden Bell    17 年前

    回调-回调函数 将用参数调用 列表等于callbackargs+(结果,) 一旦计算完成

    “一旦计算完成”这一点似乎模棱两可。就我所知,这件事的关键是 submit()

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

    然后提交将确保 work_finished() 在目标服务器上完成分布式工作单元时调用。

    当你打电话的时候 提交() 回拨 它与的调用方在同一运行时调用 提交() ... 并在完成工作负载函数的分配后调用。

    有点像“在submit()中完成某些操作后调用foo(x,y)”

    但是,是的,文档可能会更好。在ppython源代码处进行一次扫描,看看回调在哪一点被调用 提交()

        4
  •  3
  •   Jeremy Smyth    17 年前

    A. callback

    举个例子,考虑Ajax是如何工作的:编写调用后端服务器函数的代码。在将来的某个时候,它会从该函数返回(A代表异步,这就是“并行Python”中的“并行”的全部含义)。现在-因为您的代码调用服务器上的代码,所以您希望它告诉您何时完成,并且您希望对其结果进行处理。它通过调用您的 回调函数 .

        5
  •  2
  •   marsolk    17 年前

    回调只是一个函数。在Python中,函数只是更多的对象,因此函数名可以用作变量,如下所示:

    def func():
        ...
    
    something(func)
    

    请注意,许多接受回调作为参数的函数通常要求回调接受某些参数。在这种情况下,回调函数需要接受callbackargs中指定的参数列表。我不熟悉并行Python,所以我不知道它到底想要什么。

    推荐文章