擅长:python、mysql、java
<p><a href="http://yieldpoints.readthedocs.org/en/latest/" rel="nofollow">yieldpoints</a>库有一个<code>WaitAny</code>函数。不过,它早于龙卷风使用<code>Futures</code>,所以现在使用它有点麻烦。最好查看<code>yieldpoints.WaitAny</code>和{<cd4>}的源代码,以将两者混合。在</p>
<p>或者,可以重新组织代码,使<code>WaitAny</code>不再需要。与其一个在完成时剥离结果的协同进程,不如为每个任务启动一个新的协同进程,并在最后将它们全部加入:</p>
<pre><code>@gen.coroutine
def process_tracker(self, tracker):
result = yield self.scrape_tracker(tracker)
# Do whatever you'd do after WaitAny here. All the process_tracker
# calls can proceed in parallel as their results are ready.
@gen.coroutine
def process_all_trackers(self, trackers):
yield [self.process_tracker(t) for t in trackers]
</code></pre>