使用線程鎖的方式很簡(jiǎn)單(可能是我不了解其他方式)
需要用到threading.Lock()
然后調(diào)用相關(guān)方法:
lock = threading.Lock()
lock.acquire() # 得到鎖
# 中間操作
lock.release() # 釋放鎖
例子:
import threading
import time
global counter
counter = 0
lock = threading.Lock()
class myThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global counter
while True:
if counter >= 15:
break
lock.acquire()
counter += 1
lock.release()
print("線程名:%s漓拾,計(jì)數(shù)器:%s" % (self.name, counter))
time.sleep(0.1)
thread1 = myThread()
thread2 = myThread()
thread1.start()
thread2.start()
運(yùn)行結(jié)果:
線程名:Thread-1蘸际,計(jì)數(shù)器:1
線程名:Thread-2条辟,計(jì)數(shù)器:2
線程名:Thread-2,計(jì)數(shù)器:3
線程名:Thread-1绿渣,計(jì)數(shù)器:4
線程名:Thread-2兵志,計(jì)數(shù)器:5
線程名:Thread-1戳稽,計(jì)數(shù)器:6
線程名:Thread-1,計(jì)數(shù)器:7
線程名:Thread-2试溯,計(jì)數(shù)器:8
線程名:Thread-1倔丈,計(jì)數(shù)器:9
線程名:Thread-2,計(jì)數(shù)器:10
線程名:Thread-1扼倘,計(jì)數(shù)器:11
線程名:Thread-2确封,計(jì)數(shù)器:12
線程名:Thread-1,計(jì)數(shù)器:13
線程名:Thread-2,計(jì)數(shù)器:14
線程名:Thread-1爪喘,計(jì)數(shù)器:15