在这篇文章中我们将详细讨论如何在Python中使用threading
模块:
Lock
来防止竞争条件Queue
进行线程安全的数据/任务处理。你可以使用threading.Thread()
来创建一个线程。它需要两个重要的参数:
target
: 一个调用对象(函数),这个线程将在线程启动时被调用args
: 函数的参数,必须是一个元组看一个简单示例:通过thread.start()
启动线程, 并使用thread.join()
等待线程结束。
from threading import Thread
def square_numbers():
for i in range(1000):
result = i * i
if __name__ == "__main__":
threads = []
num_threads = 10
# 创建线程并为每个线程分配一个函数
for i in range(num_threads):
thread = Thread(target=square_numbers)
threads.append(thread)
# 开始所有线程
for thread in threads:
thread.start()
# 等待所有线程结束
# 主线程阻塞,直到所有线程结束
for thread in threads:
thread.join()
因为线程在同一个内存空间中,它们可以访问同一个(公共)数据。 因此,你可以简单地使用全局变量,该变量可以被所有线程读取和写入。
例子:创建两个线程,每个线程访问当前某个变量值, 并修改它(在这个例子中只是增加1)。 每个线程执行10次操作。
示例代码:
from threading import Thread
import time
# 所有线程都可以访问这个全局变量
database_value = 0
def increase():
global database_value # 全局变量
local_copy = database_value # 复制一份
local_copy +=