python 为什么有人说Python的多线程是鸡肋呢?
为什么有人说Python的多线程是鸡肋呢?
Gil lock限制了进程中的不同线程在同一时间只能占用一个CPU。可以看出,当使用多线程处理计算密集型任务时,Python中的多个线程需要相互等待以获得CPU资源。在这个时候,多线程不能并行,我们真的不具备预期的多线程能力。
但是,如果执行的是Io密集型任务,多个线程之间没有太多CPU资源争用,更多的是每个线程都在进行Io传输和等待,此时,多线程的能力还是可以发挥出来的。
所以我们不能简单地说Python的多线程是鸡肋,但是它的设计限制了它的应用场景。
python多线程为什么没有并行?
1. 什么是吉尔?
Gil的全名是global interpreter lock(global interpreter lock),源于Python设计之初的考虑和对数据安全的决策。
2. 每个CPU只能同时执行一个线程
事实上,单核CPU下的多线程只是并发,而不是并行。并发性和并行性是同时处理多个请求的概念。但是并发和并行之间有区别。并行意味着两个或多个事件同时发生,而并发意味着两个或多个事件在同一时间间隔发生。
百度搜索圈t社区(www.aiquanti.com)Python多线程处理效率不高,因为存在Gil锁,并且执行不能并发。
排除一个,留下异步进程。效率的高低取决于计算密集型任务和进程间通信的频率。
还要记住,单个进程是异步的,只有一个核心在满负荷工作,而多进程可以利用多核功能。
最后,可以混合使用多处理和异步。这种结构与go有点类似,可能是最有效的组合。GIL of
python要求任何时候只有一个线程可以访问python虚拟机。因此,使用Python进行多线程计算并不划算。但对于IO密集型应用程序(如网络交互),Python的多线程处理非常棒。如果您是一个计算密集型任务,则必须与Python并行执行它
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。