python多线程编程,获取各个线程返回值
时间: 2023-07-28 19:27:13 浏览: 53
要获取各个线程的返回值,可以使用Python中的`concurrent.futures`库中的`ThreadPoolExecutor`或`ProcessPoolExecutor`。这两个类都提供了`submit()`方法,用于提交任务并返回一个`Future`对象,该对象可以用来获取任务的返回值。
以`ThreadPoolExecutor`为例,可以通过`submit()`方法提交任务并得到一个`Future`对象,然后调用`result()`方法来获取任务的返回值。这个方法会阻塞当前线程,直到任务完成并返回结果。
下面是一个简单的例子:
```python
import concurrent.futures
def worker(num):
return num * num
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
results = []
for i in range(10):
future = executor.submit(worker, i)
results.append(future)
for future in concurrent.futures.as_completed(results):
print(future.result())
```
在上面的例子中,我们使用`ThreadPoolExecutor`创建了一个最大工作线程数为5的线程池,然后提交了10个任务。我们使用`as_completed()`方法来迭代已经完成的任务,然后通过`result()`方法获取任务的返回值。
当然,还有其他的方法可以获取线程返回值,比如使用`queue.Queue`来实现线程之间的通信。但是使用`concurrent.futures`库比较方便,而且还提供了其他一些有用的功能,比如异常处理、超时控制等。