并行Python:什么是回调?

Nop*_*ope 45 python callback parallel-python

并行Python中,它在提交函数中有一些叫做回调(文档)的东西,但它似乎没有解释得太好.我几天前在他们的论坛上发帖,我没有收到回复.有人会解释回调是什么以及它用于什么?

谢谢.

Log*_*ldo 170

回调是由API的消费者提供的函数,然后API可以转向并调用(回调您).如果我设置了博士的预约,我可以给他们我的电话号码,这样他们就可以在前一天打电话给我确认预约.一个回调就是这样,除了不仅仅是一个电话号码,它可以是任意的指令,如"给我发一封电子邮件到这个地址,还打电话给我的秘书,让她把它放在我的日历中.

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

如果博士不在办公室,或者他们仍然按照时间表工作,而不是让我等待他回来,这可能是几个小时,我们挂断了,一旦预约,他们打给我.

在这种特定情况下,Parallel Python的submit函数将使用您提供的任何参数调用您的回调,并且func一旦func执行完毕就会调用结果.

  • 这对我来说是一个很大的推动(尽管仍然只值得与其他任何upvote相同),这是一个非常容易理解的类比,可能对初学者或任何刚接触这种技术的人都有帮助. (14认同)
  • 这对初学者来说是一个很好的解释,它只缺少一件事 - 一个示例代码.既然初学者知道它是什么,你能不能给我们一个简单的例子来说明使用你的模拟作为函数名称会是什么样的:ea:`callDoctor()callPatientBack()`etc (4认同)

Ale*_*lli 18

文档中的相关点:

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
Run Code Online (Sandbox Code Playgroud)

因此,如果您希望在结果准备就绪后立即执行某些代码,则将该代码放入函数中并将该函数作为callback参数传递.如果你不需要其他参数,那就是,例如:

def itsdone(result):
  print "Done! result=%r" % (result,)
...
submit(..., callback=itsdone)
Run Code Online (Sandbox Code Playgroud)

有关callbackPython中模式的更多信息,请参阅此处的演示文稿.

  • 您能重新发布演示链接吗? (2认同)