python学习笔记——线程threading,,1 线程thread


1 线程threading

1.1 基本概述

也被称为轻量级的进程。

线程是计算机多任务编程的一种方式,可以使用计算机的多核资源。

线程死应用程序中工作的最小单元

1.2 线程特点

(1)进程的创建开销较大,线程创建开销较小

(2)一个进程中可以包含多个线程

(3)线程依附于进程的存在,多个线程共享进程的资源

(4)每个线程也拥有自己独特的特征,比如ID、指令集

注意:

(1)进程有独立的空间,数据安全性较高

(2)线程使用进程的资源,即一般使用全局变量的方式进行线程间通信,所以需要较复杂的同步互斥

(3)多个不相关的线程功能最好不要凑到一起形成线程

2 线程模块

Thread module emulating a subset of Java‘s threading model

2.1 线程模块之类

Thread,Event, Lock, Rlock, Condition, [Bounded]Semaphore, Timer, local。

2.2 线程模块之方法

threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

2.3 线程模块之常量

threading.TIMEOUT_MAX 设置threading全局超时时间。

3 Thread类

3.1 Thread类创建方法

class Thread(builtins.object)的Methods defined here:

Thread(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)

group:线程组,目前没有实现,为了将来实现ThreadGroup类的扩展而设置的。

target:要执行的方法,run()方法调用的对象

name:线程名,在默认情况下,命名为Thread-N(N为最小的十进制数字)

args:元组参数

kwargs:字典参数

3.2 Thread类的实例方法:

start():启动线程

join(self, timeout=None):等待线程结束,阻塞线程直到调用此方法的线程终止或到达指定的的timeout

is_alive():返回线程是否在运行,运行返回True;

isAlive:等价于is_alive()

getName():获取线程名字

setName():设置线程名字,在threading.Thread()的帮助文档中没有该方法,其他资料上有。

is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)

  如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,主线程和后台线程均停止
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
3.3

python学习笔记——线程threading

评论关闭