[Twisted-Python] Design Pattern for Iterating Through Lists
Ken Kinder
ken at kenkinder.com
Mon Mar 14 09:37:15 MST 2005
I've come almost to the point of making a template for this kind of
operation:
d = Deferred()
d.callback(0)
results = []
def doItem(void, eggs):
return whatever(eggs)
def processResult(result):
results.append(result)
for spam in list:
d.addCallback(doItem, spam['eggs'])
d.addCallback(processResult)
d.addCallback(lambda _: results)
return d
The reason I'm calling back on doItem is that lambda will evaluate its
variables one for the iteration, causing only the first evaluation of
spam['eggs'] to be passed for each item in the list. Is there a more
readable/efficient way of doing this? Note that I'm not using a
DeferredList because I want everything processed serially, not in parallel.
-Ken
More information about the Twisted-Python
mailing list