threading.Thread
是 Python 标准库 threading
模块中的一个类,用于创建和管理线程。以下是关于 threading.Thread
的基础概念、优势、类型、应用场景以及常见问题和解决方法。
线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
threading.Thread:这个类允许你创建并控制线程。你可以通过继承 Thread
类并重写其 run()
方法来定义线程的行为,或者传递一个可调用对象给 Thread
的构造函数。
Python 中的线程主要分为两种:
下面是一个简单的示例,展示了如何使用 threading.Thread
创建和启动一个线程:
import threading
import time
def worker():
"""线程执行的函数"""
print(f"线程 {threading.current_thread().name} 开始工作")
time.sleep(2)
print(f"线程 {threading.current_thread().name} 工作结束")
# 创建线程
threads = []
for i in range(3):
t = threading.Thread(target=worker, name=f"Thread-{i}")
threads.append(t)
t.start()
# 等待所有线程完成
for t in threads:
t.join()
print("所有线程工作完成")
import threading
counter = 0
lock = threading.Lock()
def increment():
global counter
with lock:
counter += 1
threads = []
for i in range(100):
t = threading.Thread(target=increment)
threads.append(t)
t.start()
for t in threads:
t.join()
print(f"最终计数值:{counter}")
在这个示例中,我们使用了一个锁来保护对 counter
变量的访问,从而避免了竞态条件。