标签:技术分享 TE play thread view splay time 互斥锁 作用
from threading import Thread, Lock import time n = 100 def task(): global n # mutex.acquire() temp = n time.sleep(0.1) n = temp - 1 # mutex.release() if __name__ == ‘__main__‘: # mutex = Lock() t_l = [] for i in range(100): t = Thread(target=task) t_l.append(t) t.start() for t in t_l: t.join() print(‘主‘, n)
运行结果:
主 99
加了互斥锁:
# mutex from threading import Thread, Lock import time n = 100 def task(): global n mutex.acquire() temp = n time.sleep(0.1) n = temp - 1 mutex.release() if __name__ == ‘__main__‘: mutex = Lock() # 与子进程的区别是:子线程共享进程内的内存空间,所以无需把锁传给线程。进程内的所有线程用的就是同一把锁。
# 开进程的话,进程与子进程之间的数据是独占的,所以各子进程之间的数据都是独立的,锁也就不是同一把锁。故需要把锁传给子进程,确保各子进程用的是同一把锁。 t_l = [] for i in range(100): t = Thread(target=task) t_l.append(t) t.start() for t in t_l: t.join() print(‘主‘, n)
运行结果:
主 0
互斥锁的作用:将并行变成串行。
标签:技术分享 TE play thread view splay time 互斥锁 作用
原文地址:https://www.cnblogs.com/beallaliu/p/9191368.html