任务队列结合线程池执行
时间: 2023-10-26 09:08:19 浏览: 48
任务队列结合线程池可以有效地利用多线程,提高程序的并发性和执行效率。一般来说,任务队列用于存储待执行的任务,线程池则用于管理和调度线程的执行。下面是一个简单的示例代码:
```python
import queue
import threading
# 定义任务队列
task_queue = queue.Queue()
# 定义线程池
class ThreadPool:
def __init__(self, num_threads):
self.num_threads = num_threads
self.threads = []
def start(self):
for i in range(self.num_threads):
t = threading.Thread(target=self.run)
self.threads.append(t)
t.start()
def run(self):
while True:
task = task_queue.get()
if task is None:
break
task()
def join(self):
for i in range(self.num_threads):
task_queue.put(None)
for t in self.threads:
t.join()
# 定义任务函数
def task_func(task_id):
print(f'Task {task_id} executed')
# 添加任务到队列
for i in range(10):
task_queue.put(lambda: task_func(i))
# 创建线程池并启动
thread_pool = ThreadPool(4)
thread_pool.start()
# 等待所有任务执行完成
thread_pool.join()
```
在上述代码中,我们首先定义了一个任务队列 `task_queue`,然后定义了一个线程池 `ThreadPool`,包括 `start` 方法启动线程池,`run` 方法执行任务,以及 `join` 方法等待所有任务执行完成。接着,我们定义了一个任务函数 `task_func`,并将多个任务添加到队列中。最后,我们创建线程池并启动,等待所有任务执行完成。
在实际应用中,我们可以根据具体需求调整线程池的大小,以及任务队列的存储方式和任务执行逻辑,进一步优化程序的性能和可靠性。