python多线程

线程的概念

 线程是进程执行代码的一个分支,每个执行分支想要工作执行代码需要cpu进行调度

 即:线程是cpu调度的最小单位,每个进程至少有一个线程,而这个线程被称为主线程

线程的作用

多线程可以完成多任务

多线程之间共享全局变量

Python中使用多线程

导入线程模块

from threading import Thread

线程类Thread参数说明

Thread([group[,target[,name[,args,[kwargs]]]]])

         Group : 线程组,目前只能使用None

         Target:执行的目标任务名

         Args:以元组的方式给执行任务传参

Kwargs:以字典方式给执行任务传参

Name:线程名

获取当前线程

  Threading.current_thread()

线程执行的特征:

  线程执行时无序的

  主线程会等待所有的子线程执行结束再结束

  线程之间共享全局变量

  线程之间共享全局变量数据出现错误问题(多线程操作全局变量时)

  

设置成为守护主线程

Threading.Thread(target=task.daemon=True)

.setDaemon(True)

互斥锁

多个线程一起去抢,抢到锁的线程先执行,没有抢到锁得线程需要等待,等待互斥锁使用完释放后,其他等待得线程再去抢这个锁

互斥锁的使用:

threading模块中定义了Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁

创建锁

Mutex = threading.Lock()

上锁

Mutex.acquire()

释放锁

Mutex.release()

注意点

Acpquire和release方法之间得代码同一时刻只能有一个线程去操作

如果调用acquire方法得时候,其他线程已经使用了这个互斥锁,那么此时acquire方法会堵塞,知道这个锁释放后才会再次上锁

死锁

一直等待对方释放锁的情景就是死锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值