使用Python中threading.Thread类的构造函数__init__()实现线程池
发布时间:2024-01-20 13:33:20
在Python中,可以使用threading.Thread类来创建线程。Thread类的构造函数__init__()可以用于初始化线程对象,并指定要执行的函数以及函数所需的参数。为了实现线程池,我们可以通过创建多个线程对象,并将其放入一个列表中来实现。
下面是一个使用threading.Thread实现线程池的例子:
import threading
# 定义线程池类
class ThreadPool:
def __init__(self, num_threads):
self.num_threads = num_threads
self.threads = []
def add_task(self, func, args=()):
thread = threading.Thread(target=func, args=args)
self.threads.append(thread)
def start(self):
for thread in self.threads:
thread.start()
def wait_completion(self):
for thread in self.threads:
thread.join()
# 定义要执行的函数
def print_numbers(start, end):
for i in range(start, end):
print(i)
# 创建线程池
pool = ThreadPool(4)
# 向线程池中添加任务
pool.add_task(print_numbers, (1, 50))
pool.add_task(print_numbers, (51, 100))
pool.add_task(print_numbers, (101, 150))
pool.add_task(print_numbers, (151, 200))
# 启动线程池中的线程
pool.start()
# 等待所有线程完成
pool.wait_completion()
在上面的例子中,首先定义了一个ThreadPool类,其中包含了创建线程池的必要方法。add_task()方法用于向线程池中添加任务,接受一个要执行的函数及其参数。start()方法用于启动线程池中的所有线程,wait_completion()方法用于等待所有线程完成。
然后,创建了一个线程池对象pool,并添加了四个任务,每个任务都是执行print_numbers()函数。然后,通过调用pool.start()启动线程池中的线程,并通过pool.wait_completion()等待所有线程完成。最终,线程池中的线程将按照添加的顺序执行,并打印出相应的数字。
这样,我们就成功使用threading.Thread类的构造函数__init__()来实现了一个简单的线程池。
