电脑运行python后很卡_造成python程序员运行缓慢的原因有哪些

本文探讨了Python程序运行缓慢的原因,主要聚焦于全局解释器锁(GIL)对多线程性能的影响。尽管GIL限制了多核CPU的并行利用,但在IO密集型任务中,Python的并发性能仍可通过异步编程等方式提升。此外,文章还对比了PyPy、Jython等其他Python解释器以及JavaScript的处理方式。
摘要由CSDN通过智能技术生成

如果大家有研究过python编程开发语言的话会发现,在一些特殊场景环境下,python程序运行是比较慢的,下面我们就一起来了解一下,引起这个问题的原因都有哪些。

是全局解释器锁的原因吗?

现在很多计算机都配备了具有多个核的CPU,有时甚至还会有多个处理器。为了更充分利用它们的处理能力,操作系统定义了一个称为线程的低级结构。某一个进程(例如Chrome浏览器)可以建立多个线程,在系统内执行不同的操作。在这种情况下,CPU密集型进程就可以跨核心分担负载了,这样的做法可以大大提高应用程序的运行效率。

如果你还没有写过多线程执行的代码,你就需要了解一下线程锁的概念了。多线程进程比单线程进程更为复杂,是因为需要使用线程锁来确保同一个内存地址中的数据不会被多个线程同时访问或更改。

CPython解释器在创建变量时,先会分配内存,然后对该变量的引用进行计数,这称为引用计数referencecounting。如果变量的引用数变为0,这个变量就会从内存中释放掉。这就是在for循环代码块内创建临时变量不会增加内存消耗的原因。

而当多个线程内共享一个变量时,CPython锁定引用计数的关键就在于使用了GIL,它会谨慎地控制线程的执行情况,无论同时存在多少个线程,解释器每次只允许一个线程进行操作。

这会对Python程序的性能有什么影响?

如果你的程序只有单线程、单进程,代码的速度和性能不会受到全局解释器锁的影响。

但如果你通过在单进程中使用多线程实现并发,并且是IO密集型(例如网络IO或磁盘IO)的线程,GIL竞争的效果就很明显了。

对于一个web应用(例如Djang

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值