import time
import threading
# 创建一个互斥锁, 默认是没有上锁的
mutex = threading.Lock()
def sing():
"""sing function"""
# 上锁: 若果之前没有上锁, 此时上锁成功; 如果之前已经上锁, 此时会堵塞在这里, 直到这个锁被解开;
mutex.acquire()
for i in range(5):
time.sleep(1) # 当前线程睡一秒
print("sing %d" % (i+1))
# 解锁
mutex.release()
def dance():
"""dance function"""
# 上锁: 若果之前没有上锁, 此时上锁成功; 如果之前已经上锁, 此时会堵塞在这里, 直到这个锁被解开;
mutex.acquire()
for i in range(10):
time.sleep(1)
print("dance %d" % (i+1))
# 解锁
mutex.release()
def main_function():
target1 = threading.Thread(target=sing)
target2 = threading.Thread(target=dance)
target1.start()
target2.start()
while len(threading.enumerate()) > 1:
print(threading.enumerate()) # 获取当前全部线程
time.sleep(1)
if __name__ == '__main__':
main_function()