threading模块基本用法Python多线程编程(一):threading模块中Thread类的详细用法Python多线程编程(二):Lock的详细用法threading模块中类threading.Thread.join函数解释threading.Thread.join(timeout=None)调用该函数的线程会阻塞主线程和其他调用该线程的线程,直到线程结束或者超时时间到了。threading.Thread.daemon函数将这个属性解释为一个布尔值,它决定线程是否是受保护的线程(后台线程)。意思是该线程是为调用该线程的主线程服务的,即当主线程结束时,不管该线程是否运行完毕,都会立即结束。注意threading.Lock类的解释是threading.Lock所代表的线程锁概念是独立存在的,不属于任何线程。所以实际上是每个线程都来抢占(抢占),其他线程可以在抢占到的线程释放后继续抢占。并且threading.Lock类支持上下文管理协议,即可以使用with语句。可以想象acquire是在它的__enter__函数中实现的,release是在它的__exit__函数中实现的。threading.local类说明了该类提供了TLS(ThreadLocalStorage)机制。具体来说,我们定义一个全局变量var=threading.local()。对于var,我们可以任意赋值它的属性来存储数据。并且每个线程在使用这个全局变量var时,会自动生成自己的版本,不会互相影响(global中定义的var本身是属于主线程的)。这个类的意义不在于提供一个全局变量,让每个线程修改它来完成一定的逻辑(ticketwindowcase),这是线程锁需要处理的事情。这个类实际上提供了一个安全的全局变量,使得每个线程在编写调用时不需要传递很多参数。它是编程范式的优化。详见:深入理解Python的TLS机制和Threading.local()线程模块中的常用函数threading.current_thread()返回当前线程类。threading.main_thread()返回主线程类。threading.active_count()返回当前仍在执行的线程数。threading.enumerate()返回所有当前正在执行的线程的列表。
