我想创建一个延迟如下:
f1(x1)
并且f2(x2)
并行执行(可以这么说),完成后,我运行f3()
如果我有相同的参数,我会运行:
d = Deferred()
d.addCallbacks(f1)
d.addCallbacks(f2)
d.addCallback(lambda x: f3())
d.callback(x1)
这样我就可以同时传递x1
给f1
和f2
。但我需要f1
得到x1
等等。
我怎样才能做到这一点?
谢谢。
我想创建一个延迟如下:
f1(x1)
并且f2(x2)
并行执行(可以这么说),完成后,我运行f3()
如果我有相同的参数,我会运行:
d = Deferred()
d.addCallbacks(f1)
d.addCallbacks(f2)
d.addCallback(lambda x: f3())
d.callback(x1)
这样我就可以同时传递x1
给f1
和f2
。但我需要f1
得到x1
等等。
我怎样才能做到这一点?
谢谢。
我不确定,如果我理解你的用例正确,但这似乎是一个DeferredList会特别好用的东西。
d1 = function_that_returns_a_deferred_1(x1)
d2 = function_that_returns_a_deferred_2(x2)
d = DeferredList([d1, d2])
d.addCallback(lambda ign: f3())
这样,f3 只有在 d1 和 d2 都完成后才会执行。