第 11 课 Python 多线程
1. 进程与线程
进程就是程序执行的载体,我们打开的每个软件、游戏,执行的每一个Python脚本都是启动一个进程。
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位。例如车间的生产是一个进程,那每个流水线就是它的一个线程。
线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
进程提供线程执行程序的前置要求,线程在重组的资源配备下,去执行程序。Python3线程中常用的两个模块是“_thread”和“threading”(推荐使用)。
thread模块已被废弃。用户可以使用threading模块代替。所以,在Python3中不能再使用“thread”模块。为了兼容性,Python3将thread重命名为“_thread”。
2. 线程对象Thread
class threading.Thread(group=None,target=None,name=None,args=(),kwargs={})
- group: 应该为None,为了日后扩展ThreadGroup类实现而保留
- target: 是用于run()方法调用的课调用对象,默认是None,表示不需要调用任何方法
- name:线程名称,默认情况下,由"Thread-N"格式构成一个唯一的名称,其中N是小的十进制数。
- args:用于调用目标函数的参数元组,默认是()
- kwargs:用于调用目标函数的关键字参数字典,默认是{}
3. Thread类的方法
join | 阻塞直到线程执行结束。这会阻塞调用这个方法的线程,直到被调用join的线程终结-不管是正常终结还是抛出未处理异常-或者直到发生超时,超时选项是可选的。 一定要在join()后调用is_alive()才能判断是否发生超时-如果线程仍然存 |