首页 > 手机 > 配件 > Python线程指南,python线程

Python线程指南,python线程

来源:整理 时间:2022-04-07 17:28:54 编辑:华为40 手机版

python中的多线程和JAVA中的多线程有什么区别吗?

python中的多线程和JAVA中的多线程有什么区别吗

python是支持多线程的,但是python里的多线程是单cpu意义上的多线程,它和多cpu上的多线程有着本质的区别,这是因为python存在一个叫Global Interpreter Lock(GIL)全局解释器锁。在解释器解释执行任何 Python 代码时,都需要先获得这把锁,也就是说在同一时刻内,只有一条线程可以在CPU中运行。

但是python的多线程并不是毫无用处的。当遇到 I/O 操作时会释放这把GIL锁,所以如果程序是一个IO密集型的程序,一个线程处在IO等待的时候另一个线程便可以取得锁并在CPU中运行,这时就发挥了多线程的作用。但如果是纯计算的程序,没有 I/O 操作,那么只有取得GIL锁的线程可以在CPU中运行,其它的线程都处于等待状态,等待持有GIL 锁的线程的释放锁,也就相当于单线程在跑(而且上下文切换也会有所开销)。

既然Python解释器是单线程的,还有进行多线程编程的必要吗?

既然Python解释器是单线程的,还有进行多线程编程的必要吗

谢小秘书邀请~~先简单的回答:有必要。首先,线程消耗的是CPU资源如果一个单线程内处理的业务逻辑会占用100%的CPU资源,那么,上了多线程也是没有用的。但这种情况很少,高CPU占用一般出现在内存计算场景下,或者不良代码中错误的死循环。 正常情况下,CPU占用大于80%就需要进行代码或设计的优化,或者服务器增加资源了。

多线程场景适用于解决慢速IO的问题我们绝大部分的计算,都会依赖于很多外部资源IO,如磁盘读写、网络访问、数据库访问... 这些资源的访问速度远远低于CPU的切换速度。如果使用单线程进行操作时,就会长时间的等待IO的返回。造成无效等待,性能低下。所以即使是Python,为了充分利用CPU资源,提高性能,在通常的业务场景下使用多线程编程也是完全必要的。

多核与Python多实例延续上面的问题,我们知道现在CPU大部分都是多核的,python为了避免单线程只能使用到一个核的问题,是有个multiprocessing 库的,允许创建子进程(子进程数一般与核心数相同),来充分利用CPU资源。↓ ↓ ↓ 喜欢就点赞吧,欢迎各位评论指教,谢谢关注 -- 极迭代!。

文章TAG:线程Pythonpython指南

最近更新