import threading
from threading import Lock
import time
def demo_one():
for i in range(30):
time.sleep(1)
global num
num += 1
print("111,demo_one" + str(num))
def demo_two():
for i in range(30):
time.sleep(1)
if not lock.locked():
lock.acquire() # 加锁
global num
num -= 100
print("demo_two" + str(num))
if lock.locked():
lock.release() # 释放锁,这个方法可以在任何线程中调用。
print("线程锁状态:" + str((lock.locked()))) # 是否被锁定
def demo_three():
lock.acquire()
time.sleep(1)
global num
num -= 1
time.sleep(1)
print(num)
lock.release()
if __name__ == '__main__':
lock = Lock()
num = 0
t_list = []
# func_list = [demo_one, demo_two]
# for func in func_list:
# t = threading.Thread(target=func)
# t_list.append(t)
# t.start()
for i in range(100):
t = threading.Thread(target=demo_three)
t.start()
t_list.append(t)
for t in t_list:
t.join()
Python threading 线程锁
最新推荐文章于 2024-06-07 11:38:19 发布