concuurent.futurn 多线程 返回值 python
时间: 2024-06-13 21:02:09 浏览: 168
`concurrent.futures` 是 Python 标准库中的一个模块,用于简化异步任务的执行和管理。它提供了一个高级接口,使得开发者能够更容易地在多个线程或进程之间并发执行任务,而无需深入底层的线程/进程管理。
`concurrent.futures.Future` 是这个模块的核心类,它代表了一个尚未完成的异步操作的结果。当你使用 `ThreadPoolExecutor` 或 `ProcessPoolExecutor` 创建一个任务并提交给线程池或进程池执行时,`submit()` 方法会返回一个 `Future` 对象。这个对象代表了被提交的任务,你可以获取到任务的状态(如是否完成、是否有异常等),以及当任务完成时获取其返回值。
例如:
```python
from concurrent.futures import ThreadPoolExecutor, Future
def my_task(x):
# 这里是你的任务代码,可能返回一个值
return x * x
# 创建线程池
with ThreadPoolExecutor(max_workers=4) as executor:
# 提交任务并获取未来对象
future = executor.submit(my_task, 5)
# 当任务完成时,检查状态并获取结果
if future.done():
result = future.result()
print(f"计算结果: {result}")
else:
print("任务还在运行中...")
```
当你调用 `future.result()` 时,如果任务已完成且没有异常,它会返回任务的返回值。如果任务还在运行,或者执行时抛出异常,该方法会阻塞直到任务完成。此外,还有其他方法可以检查任务状态,如 `future.running()` 和 `future.cancelled()` 等。
阅读全文