python获取线程池返回结果
时间: 2024-07-30 20:01:22 浏览: 130
在Python中,可以使用`concurrent.futures`模块来创建线程池并处理异步任务。如果你想从线程池中获取返回的结果,你需要先提交任务到线程池,然后使用`ThreadPoolExecutor`的`.submit()`方法,并传入一个函数以及任何需要传递给该函数的参数。这个方法会立即返回一个`Future`对象,你可以通过它来获取最终的结果。
以下是基本步骤:
```python
import concurrent.futures
def worker_function(param):
# 这里是你线程执行的任务
result = do_something_with(param)
return result
# 创建线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
future = executor.submit(worker_function, 'some_param')
# 等待任务完成并获取结果
try:
result = future.result() # 使用result()方法阻塞直到完成,如果没有异常则返回
except concurrent.futures.TimeoutError:
print("Timeout occurred")
except Exception as exc:
print(f"An error occurred: {exc}")
else:
print(f"Result: {result}")
```
在这个例子中,如果你希望获取所有任务的结果,可以使用`as_completed`迭代器:
```python
results = []
for future in concurrent.futures.as_completed(futures):
try:
results.append(future.result())
except Exception as exc:
print(f"{future} generated an exception: {exc}")
```
阅读全文