Skip to content

线程模块

1. threading.Event()

使用threading.Event可以使一个线程等待其他线程的通知, Event默认内置了一个标志,初始值为False。 一旦该线程通过wait()方法进入等待状态,直到另一个线程调用该Event的set()方法将内置标志设置为True时,该Event会通知所有等待状态的线程恢复运行。

clear()方法则相反。

2. threading.Lock()

线程锁,可以通过 lock.acquire()lock.release() 来独占和释放线程的运行。

3. threading.Semaphore()

Semaphore是一个工厂函数,负责返回一个新的信号量对象。Semaphore内部维护一个计数器,该计数器的计算方式为: 初始值 + release方法的调用次数 - acquire方法的调用次数。每次调用 acquire 方法都会使内部计数器减一,一旦计数器为负的,则 acquire 方法会被阻塞,直到其他线程调用 release 方法,使信号量内部计数器值为正。计数器初始值为1。

4. threading.local()

返回的是线程私有变量,但可像全局变量在任意地方使用,也就是说,所有的子线程都拥有一份对该变量的拷贝,线程之间不会互相影响该变量的值。