首页 > 编程知识 正文

redis底层数据结构,多线程主要在哪些方面应用

时间:2023-05-03 22:00:15 阅读:140454 作者:3919

1、CPU密集型代码(各种循环处理、计数等)在这种情况下,ticks计数会立即达到阈值,触发GIL的释放和重新竞争) )多个线程之间的交互当然需要占用资源)

2、I/o密集型代码(文件处理、网络爬虫等)在这种情况下多线程可以提高效率)在单线程中,如果有I/o操作,就会等待I/o,浪费时间,但打开多线程因此,python的多线程对IO密集型代码很友好。

另一方面,在python3.x中,GIL不使用ticks计数,而是使用计时器。 执行时间达到阈值后,当前线程释放GIL。 虽然这对于CPU密集型程序更为有用,但GIL在同一时间只能运行一个线程的问题仍然没有解决,因此效率仍然不够。

多核比单核多线程还糟糕。 在单核中,多线程导致每次释放GIL时唤醒的线程可以无缝运行,因为它可以获取GIL锁。但是在多核中,当CPU0释放GIL时,其他CPU的线程会发生冲突,但GIL很快又会重新启动

回到最初的问题。经常我们会听到老手说:“python下想要充分利用多核CPU,就用多进程”,原因是什么呢? 理由如下。

在python中,多进程的执行效率优于多线程,因为每个进程都有独立的GIL,并且互不干扰,可以真正并行执行(仅限于多核CPU )。

因此,在这里我们得出结论,要想在多核上并行提高效率,使用多进程是提高执行效率的方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。