【发布时间】:2015-05-21 21:21:34
【问题描述】:
假设我有 3 个任务。
tasks = [task1, task2, task3]
我想并行运行这 3 个任务,所以我将它们放在一个线程池中。
from multiprocessing.pool import ThreadPool
worker_pool = ThreadPool(len(tasks))
async_results = [worker_pool.apply_async(task) for task in tasks]
然后我需要get() 这些异步结果。这是我的工作:
[async_result.get() for async_result in async_results]
但是,此方法尝试将这些异步结果一一get()。 task2 有可能实际上在进程中间失败了,我想通过get() 相应的异步结果来了解这一点。在这种情况下,这里的方法实际上会在第一个任务处被阻塞。我只能在 task1 完成后注意到 task2 失败。
我想知道是否可以通过某种方式获得首先准备好的异步结果。
【问题讨论】:
标签: python multithreading asynchronous