1、threading模块1.1.线程简述线程(轻量级进程)与进程类似,不过它们是在同一个进程下执行的,并共享相同的上下文。可以将它们认为是在一个主进程或"主线程"中并行运行的一些"迷你进程"。线程包括开始、执行顺序和结束三部分。它有一个指令指针,用于记录运行的上下文。它其他线程运行时,它可以被抢占(中断)和临时挂起(睡眠/加锁)—这种做法叫做让步(yielding)。1.2.使用threading模块来创建多线程使用Thread类,可以有很多方法来创建线程,其中常用的有:创建Thread的示例,传给它一个函数;派生Thread的子类,重新run方法,并创建子类的实例。示例1:创建Thread的实例,传给它一个函数from threading import Threadimport timedef test(): print("—hello-world—") time.sleep(1)for i in range(5): #创建线程,线程执行的任务是target指定的函数,如果函数需要传入参数,则可以指定args=(),或者kwargs={} t = Thread(target=test) t.start()执行结果:—hello-world——hello-world——hello-world——hello-world——hello-world—示例2:使用Thread子类创建线程2、thread注意点3、多线程共享全局变量3.1.线程关于全局变量注意点一个进程中的各个线程与主线程共享同一片数据空间。因此与进程相比,线程之间的信息共享和通信更加容易。在一个程序中,线程的执行是:每个线程运行一小会,然后让步给其他线程(再次排队等待更多的CPU时间)。在整个进程的执行过程中,每个线程执行它自己特定的任务,在必要时和其他线程进行通信。当然,这种共享是有风险的。如果两个或多个线程访问同一片数据,由于数据的访问顺序不同可能导致结果不一致。这种情况叫竞态条件。辛运的是,大多数线程库都有一些同步源语,以允许线程管理器控制执行和访问。4、同步和互斥锁5、标题文字标题文字