并行 Python: 什么是回调?

并行 Python中,它在 服从函数中有一个称为 复试(文件)的东西,但是它似乎没有很好地解释它。我几天前在他们的论坛上发了帖子,还没有收到回复。有人能解释一下什么是回调以及它的用途吗?

91268 次浏览

看看这个链接,就像一个叫做。

回调函数 将被称为论点 列表等于 callbackargs + (结果,) 一旦计算完成

“一旦计算完成”这一点似乎有些模棱两可。关键是,据我所知,submit()调用将工作分发到其他服务器,然后返回。因为完成是异步的,而不是块的,所以它允许您提供一个函数,当某个工作单元完成时调用该函数。如果你这样做:

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

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

当您调用 submit()时,您可以提供一个 复试,它与 submit()的调用者在同一个运行时中被调用... 并且在工作负载函数的分配完成之后被调用。

有点像“ call foo (x,y) when you have done some stuff in mit ()”

但是,是的,文件可能会更好。在 ppython 源代码上稍作了解,并查看在 submit()中调用回调的位置

文件中的相关部分:

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 中 callback模式的更多信息,请参见我的演示文稿 给你

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

def func():
...


something(func)

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

复试是您定义的函数,稍后由您调用的函数调用。

例如,考虑 AJAX 如何工作: 编写调用后端服务器函数的代码。在将来的某个时候,它将从该函数返回(“ A”代表异步,这就是“并行 Python”中的“并行”的全部内容)。现在——因为您的代码调用服务器上的代码,所以您希望它告诉您什么时候完成,并希望对其结果进行处理。它通过调用你的 回调函数回调函数来实现这一点。

当被调用的函数完成时,它告诉你已经完成的标准方式是你告诉它在你的代码中调用一个函数。这是回调函数,它的工作是处理您调用的底层函数的结果/输出。

回调是 API 的使用者提供的一个函数,然后 API 可以对其进行调用(回调)。如果我预约了医生,我可以给他们我的电话号码,这样他们就可以在预约的前一天给我打电话确认。回复就像那样,除了不仅仅是一个电话号码,它可以是任意的指令,比如“给我发一封这个地址的电子邮件,也可以给我的秘书打电话,让她把它放在我的日程表中。”。

回调通常在操作是异步的情况下使用。如果您需要调用一个函数,并立即继续工作,您不能坐在那里等待它的返回值让您知道发生了什么,所以您提供了一个回调。当函数完全完成其异步工作时,它将使用一些预先确定的参数(通常是您提供的一些参数,以及一些关于您请求的异步操作的状态和结果的参数)来调用您的回调。

如果医生不在办公室,或者他们还在排时间表,而不是让我等他回来,可能要等好几个小时,我们就挂电话,一旦预约安排好了,他们就给我打电话。

在这个特定的示例中,一旦 func完成执行,并行 Python 的提交函数将使用您提供的任何参数和 func的结果调用您的回调函数。