1. 线程概念
线程就是进程内部的一条执行线索
在进程内部默认存在的一个线程 -- 主线程
新创建出来的 -- 子线程
现代的操作 是以线程为调度的基本单位 单元
2. 创建子线程
创建Thread类的对象
对象 = threading.Thread()
函数参数
target参数 指定 子线程运行的函数
args参数指定 子线程运行的函数所需的位置参数 -元组
kwargs参数指定 子线程运行的函数所需的关键字参数 -字典
启动进程的创建和执行
.start()
阻塞等待 子线程执行完成
.join()
3、多线程知识回顾
创建一个线程方式1
import threading
thd = threading.Thread(target=函数, args=(), kwargs={})
thd.start()
创建一个线程方式2
class mythread(threading.Thread):
def run(self):
pass
等待子线程运行完成
.join()
多线程执行顺序如何?
无序
同一个进程的线程 共享 _全局变量__ ?
什么是 多线程同步?
协同-保持秩序
互斥锁的特点?
能够保证同一时间点 只有一个线程能够成功获取
如何使用
创建
lock = threading.Lock()
申请
lock.acquire() = lock.acquire(True) = lock.acquire(True, -1)
lock.acquire(True, 10)
释放
lock.release()
4、多任务的应用场景
爬虫
5、GIL 全局解释器锁-cpython中 -> c语言中的内存管理 只能同时被一个线程访问