python如何停止子线程 为什么有人说Python的多线程是鸡肋呢?
浏览量:2608
时间:2021-03-14 03:14:51
作者:admin
为什么有人说Python的多线程是鸡肋呢?
Gil lock限制了进程中的不同线程在同一时间只能占用一个CPU。可以看出,当使用多线程处理计算密集型任务时,Python中的多个线程需要相互等待以获得CPU资源。在这个时候,多线程不能并行,我们真的不具备预期的多线程能力。
但是,如果执行的是Io密集型任务,多个线程之间没有太多CPU资源争用,更多的是每个线程都在进行Io传输和等待,此时,多线程的能力还是可以发挥出来的。
所以我们不能简单地说Python的多线程是鸡肋,但是它的设计限制了它的应用场景。
线程进入阻塞时,线程会不会让出CPU?
这取决于上下文切换机制。通常,WindowsLinuxIOS会给每个线程指定的执行时间。如果时间到了,就会出现计时器中断信号,线程将被动地失去使用CPU的权利。然而,一些简单的嵌入式系统没有这种机制。上下文切换通常要求线程放弃CPU的使用权,并将其交给内核。如果当前线程此时被阻塞,将导致死循环。在这个时候,我们应该主动调用函数,比如重新调度或者向内核发送信号。当然,带定时器的系统也可以调用这些函数,要求当前线程提前放弃CPU资源,避免在循环中浪费等待时间。
python如何停止子线程 python3 python阻塞和非阻塞
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。