互斥锁,递归锁,信号量
以上都是进程(线程)锁,下面我就一一解释一下
最普通互斥锁
from threading import Thread,Lock import time def work(): l.acquire() time.sleep(1) print(‘ok‘) l.release() if __name__ == ‘__main__‘: l = Lock() t_l = [] start = time.time() for i in range(10): t = Thread(target=work) t_l.append(t) t.start() for t in t_l: t.join() print(time.time()-start)
看一下最后执行时间,如果没有互斥锁,线程是并行执行,时间在1s多点,而有互斥锁后,线程变成串行执行,时间是10s多点,
它有什么作用:保证同一时间只有一个进程(线程在修改数据,从而使修改的共享数据安全),也是为什么Cpython解释器不能在同一进程内真正意义上并发线程(GIL锁)
原文:http://www.cnblogs.com/fenglin0826/p/7453572.html