多线程加锁.py 665 B

123456789101112131415161718192021222324252627
  1. # -*- coding: utf-8 -*-
  2. import time
  3. import threading
  4. # 创建锁对象
  5. lock = threading.Lock()
  6. num = 0
  7. def run(n):
  8. global num
  9. for i in range(10):
  10. # 加锁 为了确保下面代码只能由一个线程从头到尾的执行
  11. # 会阻止多线程的并发执行,所以效率会大大降低
  12. with lock:
  13. time.sleep(2)
  14. print("start")
  15. num = num + 1
  16. print(f"======{n}========")
  17. if __name__ == '__main__':
  18. t1 = threading.Thread(target=run,args=(6,))
  19. t2 = threading.Thread(target=run,args=(9,))
  20. t1.start()
  21. t2.start()
  22. t1.join()
  23. t2.join()
  24. print("num = %s"%(num))