【发布时间】:2016-04-07 22:27:42
【问题描述】:
我对 twisted 很陌生,我真的需要一件事 - 运行任意数量的函数(从同一个函数开始),收集所有函数的结果并进行一些处理。
这是我所拥有的:
from twisted.internet import defer
import time
# slow computing query
def process_data(num, data):
time.sleep(5)
array = []
# mock the results obtained from processed data
for i in range(0, 5):
array.append(num)
return array
def process_results(arrays):
# this should collect return arrays of all callbacks
print arrays
data = []
callbacks_refs = []
for i in range(0, 5):
d=defer.Deferred()
d.addCallback(process_data)
callbacks_refs.append(d)
callbacks = defer.DeferredList(callbacks_refs)
callbacks.addCallback(process_results)
for i, d in enumerate(callbacks_refs):
d.callback(i, data)
我希望最后一个 for 循环将开始异步执行所有回调(就像通常使用 Promises 一样),所有结果都将传递给 process_results 函数,该函数将在 callbacks_refs 的所有回调完成后执行,但我觉得我大错特错了。
【问题讨论】:
标签: python asynchronous callback twisted