多线程是 Python 中一个非常有用的特性,它允许程序同时执行多个任务。本教程将介绍 Python 中的多线程基础,包括如何创建线程、同步线程以及处理线程安全问题。
创建线程
在 Python 中,你可以使用 threading
模块来创建线程。以下是一个简单的例子:
import threading
def print_numbers():
for i in range(5):
print(i)
thread = threading.Thread(target=print_numbers)
thread.start()
在这个例子中,我们创建了一个名为 print_numbers
的函数,它将打印数字 0 到 4。然后我们创建了一个 Thread
对象,将 print_numbers
函数作为目标传递给它,并启动了线程。
同步线程
当多个线程尝试同时访问共享资源时,可能会出现数据竞争的情况。为了避免这种情况,我们可以使用线程锁(threading.Lock
)来同步线程。
import threading
lock = threading.Lock()
def print_numbers():
for i in range(5):
with lock:
print(i)
thread = threading.Thread(target=print_numbers)
thread.start()
在这个例子中,我们使用了一个锁来确保在任何时刻只有一个线程可以执行 print
语句。
线程安全问题
当多个线程同时访问共享资源时,可能会出现线程安全问题。以下是一个简单的例子:
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1
thread1 = threading.Thread(target=increment)
thread2 = threading.Thread(target=increment)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print(counter)
在这个例子中,我们尝试创建 200000,但是由于线程安全问题,实际的计数可能小于 200000。
扩展阅读
如果你想要深入了解 Python 中的多线程,可以阅读以下文章:
Python 多线程