线程

线程是轻量级进程,一个标准的线程有线程id,当前指令,寄存器集合和堆栈组成,线程是进程的实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有在运行中必不可少的资源,但它可以与同属有一个进程的其他线程共享进程所拥有的全部资源。

使用方法:使用threading模块创建线程

#coding=utf-8
import threading
import time
 
def saySorry():
    print("大家好!")
    time.sleep(1)
 
if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=saySorry)
        t.start() #启动线程,即让线程开始执行

多线程并发操作,当调用start()方法后才真正创建线程并执行,每一个线程都有一个唯一的标识符用来区分程序的主次关系,程序主入口被称为主线程,使用threading.Thread()创建的都是子线程,线程数量等于:主线程+子线程数

主线程默认会等待所有子线程结束后再结束

len(threading.enumerate())  查看线程数量

同时开启几个线程,是没有执行顺序的

t1 = threading.Thread(target=)

t1.setDaemon(True)  设置守护线程

多线程共享全局变量,如果多个线程同时更改同一个全局变量,会造成错误的结果,需要通过t1.join() 让其他线程等待t1线程执行结束再执行,也就相当于没有并发而是并行

互斥锁

murtes = threading.Lock()  使用Lock模块创建线程锁对象

mutes.acquire   锁定同一个进程下不同线程的共享资源,其他线程不能更改此资源

mutes.release()  释放锁

确保了某段关键代码只能由一个线程从头到尾完整地执行

死锁

在线程共享多个资源 时,如果两个线程分别占有一部分资源并同时等待对方的资源,就会造成死锁。

原文地址:https://www.cnblogs.com/xuchuankun/p/9362694.html