关键字:Python,多线程,线程锁
# 导入线程模块
from threading import Thread
import threading
# 定义一个总数计数
num = 0
# 定义一个线程将增加num
def thread1(count):
global num
for i in range(count):
# 线程锁上锁,只能执行上锁之后的代码
lock1.acquire()
num += 1
lock1.release()
print(num)
# 定义一个线程增加num
def thread2(count):
global num
for i in range(count):
# 线程锁上锁,只能执行上锁之后的代码
lock1.acquire()
num += 1
lock1.release()
print(num)
# 定义一个线程锁
lock1 = threading.Lock()
t1 = Thread(target=thread1, args=(1000000, ))
t2 = Thread(target=thread2, args=(1000000, ))
# enumerate返回线程个数,返回值为一个列表,线程未开始时只显示主线程一个线程
print(threading.enumerate())
t1.start()
t2.start()
# enumerate返回线程个数,返回值为一个列表,当两个线程开始执行后返回三个线程
print(threading.enumerate())
使用线程锁之前,线程之间抢占资源,计算稍大的数据出现错误。
使用线程锁之后 ,避免了资源抢占,计算大数据不出错