将Twisted Deferred与并行回调一起使用时,每个回调都有不同的参数

时间:2011-02-26 15:24:42

标签: parameters twisted parallel-processing deferred

我想按如下方式创建延迟:

f1(x1)f2(x2)并行执行(可以这么说) 完成后,我运行f3() 如果我有相同的参数,我会运行:

d = Deferred()
d.addCallbacks(f1)
d.addCallbacks(f2)
d.addCallback(lambda x: f3())
d.callback(x1)

因此我将x1传递给f1f2。但我需要f1才能获得x1等等。

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:3)

我不确定,如果我理解你的用例是正确的,但这似乎是某种情况,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())

这样,只有在d1和d2都完成后才会执行f3。