python线程池实例
时间: 2023-05-19 17:07:23 浏览: 252
可以使用Python内置的concurrent.futures模块来创建线程池。以下是一个简单的线程池实例:
```python
import concurrent.futures
def worker(num):
print(f"Worker {num} started")
return
if __name__ == '__main__':
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
for i in range(5):
executor.submit(worker, i)
```
这个例子创建了一个最大线程数为5的线程池,并提交了5个任务给线程池执行。每个任务都是一个简单的打印语句。
相关问题
python线程池编程实例
在Python中,`concurrent.futures`模块提供了一个高级接口来进行线程池编程。这里有一个简单的例子,展示如何创建和使用线程池执行一系列任务:
```python
import concurrent.futures
# 定义一个计算函数,例如平方运算
def square(n):
return n ** 2
# 创建一个固定大小的线程池,比如8个线程
with concurrent.futures.ThreadPoolExecutor(max_workers=8) as executor:
# 准备一批待处理的任务
tasks = [executor.submit(square, i) for i in range(10)]
# 使用as_completed遍历已完成的任务
for future in concurrent.futures.as_completed(tasks):
try:
print(f"Square of {future.result()} is: {future.result()}")
except Exception as exc:
print(f"Exception raised: {exc}")
```
在这个例子中,我们首先创建了一个线程池,然后将1到9的数字作为任务提交给线程池。每个任务都是通过`submit()`方法提交的,这会返回一个`Future`对象,代表了这个任务的结果。最后,我们使用`as_completed()`迭代器来逐个获取完成的任务结果并打印。
Python线程池代码实例
好的,以下是一个Python线程池的代码实例:
```python
import concurrent.futures
import time
def task(n):
print(f"Task {n} is starting...")
time.sleep(2)
print(f"Task {n} is ending...")
return f"Task {n} is completed!"
if __name__ == "__main__":
start_time = time.perf_counter()
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
results = [executor.submit(task, i) for i in range(5)]
for future in concurrent.futures.as_completed(results):
print(future.result())
end_time = time.perf_counter()
print(f"Total execution time: {end_time - start_time:.2f} seconds.")
```
这段代码会创建一个最大线程数为3的线程池,然后提交5个任务给线程池进行处理。每个任务都会sleep 2秒来模拟耗时操作,然后返回一个字符串表示任务完成。最后,代码会输出每个任务的返回结果,并计算总共的执行时间。注意,我们使用`concurrent.futures`模块来实现线程池的操作。
阅读全文