多线程是 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 多线程