#1.线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL也要立刻交出来 #2.join是等待所有,即整体串行,而锁只是锁住修改共享数据的部分,即部分串行,要想保证数据安全的根本原理在于让并发变成串行,join与互斥锁...
一些线程需要等到其他线程执行完成之后才能执行,类似于发射信号 比如一个线程等待另一个线程执行结束再继续执行 event.set() 发信号 event.wait()阻塞等待信号,只要收到set信号,就会继续往下执行 fromthreadingimportThread, Eventimporttime event=Event()defgirl(name):print('%s 现在不单身,正在谈恋爱'%name) time...