并行的Python:什么是回调?
-
19-09-2019 - |
解决方案
一个回调是由API,该API可以然后转身和调用(呼叫你回)的消费者所提供的功能。如果我设置一个博士的任命,我可以给他们我的电话号码,这样他们就可以打电话给我前一天确认预约。回调就是这样,除了而不是仅仅是一个电话号码,就可以像任意指令“发邮件给我这个地址,并且还打电话给我的秘书,并让她把它放在我的日历。
回调经常在一个动作是异步的情况下使用。如果您需要调用一个函数,并立即继续工作,你不能坐在那里等待其返回值,让你知道发生了什么,所以你提供一个回调。当该功能是完全做得到它的异步工作,那么它会与一些预定的参数调用回调函数(通常是一些您提供,以及一些关于您请求的异步操作的状态和结果)。
如果该医生不在办公室,或者他们仍在工作的时间表,而不是我搁置等到他回来,这可能是几个小时,我们挂断,一旦预约已计划,他们给我打电话。
在这种特殊情况下,并行Python的提交功能,将调用回调你提供任何参数和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
参数。如果你不需要其他的参数,这将是公正的,e.g:
def itsdone(result):
print "Done! result=%r" % (result,)
...
submit(..., callback=itsdone)
有关更多关于Python的callback
图案,例如参见我的介绍这里。
寻找在链路,只是看起来像一个被称为钩。
回调 - 回调函数,其 将与参数来调用 列表等于callbackargs +(结果) 一旦计算完成
在“只要计算完成”位似乎不明确的。这一点,据我所看到的这件事情是,submit()
呼叫工作分配给其他服务器,然后返回。由于整理是异步的,而块,它可以让你提供一个被称为工作结束时一些单元的功能。如果你这样做:
submit( ..., callback=work_finished, ... )
然后提交将确保work_finished()
当分布式工作单元在目标服务器上完成被调用。
当你调用submit()
能为您提供的回调这就是所谓在同一个运行时作为submit()
的来电......,它被称为后工作量函数的分布是完整的。
有点像 “调用了foo(X,Y),当你做了一些东西在提交()”
但是啊,文档可能会更好。在ppython源有一个公鹅,看到在该点回调被称为在submit()
一个回调是你定义一个函数的后来你调用一个函数调用。
作为一个例子,考虑AJAX是如何工作的:你写一个调用后端服务器的功能代码。在未来的某个时候,它从该函数返回(以下简称“A”代表了异步,这是“平行”的“并行的Python”是怎么一回事)。现在 - 因为你的代码调用服务器上的代码,你想让它告诉你,当它这样做,你想做的事,其结果的东西。它通过调用这样做,你的的回调函数的。
在被调用的函数完成后,标准的方式为它告诉你这是做的是你告诉它调用一个函数在你的代码。这是回调函数,它的工作是处理来自你叫下级函数结果/输出。
一个回调是一个简单的功能。在Python,函数只是多个对象,等等的函数的名称可被用作变量,像这样:
def func():
...
something(func)
请注意,其接受一个回调作为参数的许多功能通常要求回调接受某些参数。在这种情况下,回调函数将需要接受的callbackargs指定的参数列表。我不熟悉Python的并行,所以我不知道到底是什么就是了。