python3多线程应用详解(第二卷:多线程到底是怎么工作的)

现在很多人都说用多线程工作快是因为多个不同任务可以同时执行,注意我说的是不同任务,要是重复做一件事达到相同效果就是画蛇添足了,其实这是个错误的说法,线程真正的本质是无法同时执行的。现在我们来看下多线程的工作机制:

现在我们就开其两个线程线程1,线程2,分别执行函数1,2,可以看到我在途中写了个主线程,解释一下主线程,一个进程里肯定是个从开始执行到结束进程的过程,这就是个全局流程就叫做主线程,而子线程就是主线程分支衍生出来的

现在我们来看一下这个PY文件正常执行时候的样子,其实电脑在执行这样的程序时并不是一条道走到黑,在执行完函数1的时候会休息一下,在执行函数2

图有些丑 而这中休息的过程叫做IO阻塞,而这种任务叫做IO密集型任务,执行这种任务由多线程执行是最好不过了,所以我们创建了线程1,线程2,上文中我说过,多线程是无法同时执行的这是为什么呢,原因在于CPYTHON内部的GUI锁,塔只允许每一次只有一个线程经过执行,那么真正的多线程是如何加快速率的呢:实际就是个上下文切换的过程

在函数1执行完毕时,IO会进入阻塞休息状态,在这段时间嫩线程二执行函数2,充分利用IO阻塞的时间

举个例子:假设个情景你正常吃早餐的顺序是这样的,早上吃汉堡后休息2分钟再后喝奶,这是你一个早餐流程,但是你今天就想节约这两分钟,怎么办呢 吃完汉堡立马喝牛奶,这两分钟就节省下来了。在吃早餐之前就把汉堡,牛奶同时放在桌子上,让汉堡吃完的那一刻你就可以立即喝牛奶。

道理和多线程的使用是一样的

原文地址:https://www.cnblogs.com/woshiruge/p/8411241.html