concurrent.futures返回线程值的用法
时间: 2024-02-02 16:04:37 浏览: 18
`concurrent.futures` 模块提供了一个方便的方式来并发执行一组任务,并获取每个任务的结果。这个模块可以使用线程池或进程池来执行这些任务。
在使用 `concurrent.futures` 模块时,我们通常会创建一个 `ThreadPoolExecutor` 或 `ProcessPoolExecutor` 对象,并使用 `submit` 方法来提交要执行的函数。`submit` 方法会返回一个 `Future` 对象,可以使用 `result` 方法来获取函数的返回值。
下面是一个使用 `ThreadPoolExecutor` 的例子:
```python
import concurrent.futures
def square(n):
return n ** 2
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(square, i) for i in range(10)]
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(result)
```
在这个例子中,我们创建了一个 `ThreadPoolExecutor` 对象,并使用 `submit` 方法提交了 10 个任务。`submit` 方法会返回一个 `Future` 对象的列表,我们可以使用 `as_completed` 函数来获取已经完成的 `Future` 对象。然后,我们可以使用 `result` 方法来获取每个任务的返回值。
注意,在使用 `concurrent.futures` 模块时,线程或进程的数量可以通过创建 `ThreadPoolExecutor` 或 `ProcessPoolExecutor` 对象时指定。默认情况下,线程或进程的数量与机器的核心数相同。