python制作一个线程池 创建一个子线程
时间: 2024-10-20 12:09:25 浏览: 17
用Python实现一个简单的线程池
在Python中,我们可以使用内置的`concurrent.futures`模块来创建线程池,这使得并发任务的管理变得更加简单。下面是一个例子,展示如何创建一个线程池,并从其中启动一个子线程:
```python
import concurrent.futures
# 定义一个耗时的任务函数,这里我们用一个简单的sleep函数作为示例
def worker_task(i):
print(f"Worker Thread: Starting task {i}")
import time
time.sleep(2) # 模拟耗时操作
print(f"Worker Thread: Task {i} finished")
# 创建一个固定大小的线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
# 启动子线程,将工作提交给线程池
future = executor.submit(worker_task, 1)
# 如果你想等待所有任务完成后再继续,可以这样做:
# for future in concurrent.futures.as_completed([future1, future2]):
# result = future.result()
print("Main thread: All tasks have been submitted to the pool.")
```
在这个例子中,`ThreadPoolExecutor`创建了一个最大工作线程数为3的线程池。`submit`方法用于向线程池提交一个任务(在这里是`worker_task`),并将结果返回一个Future对象。主线程并不会等待子线程执行完毕,而是继续运行其他代码。
注意,为了保证程序的执行顺序,你可以在`as_completed`循环中获取每个Future的结果,或者使用`join()`方法等待所有的子线程都完成后执行后续操作。
阅读全文