永发信息网

依然是Python GIL 硬伤吗

答案:2  悬赏:40  手机版
解决时间 2021-12-24 22:55
  • 提问者网友:流星是天使的眼泪
  • 2021-12-24 00:18
依然是Python GIL 硬伤吗
最佳答案
  • 五星知识达人网友:行路难
  • 2021-12-24 01:04
GIL完全可以不在意,根本不是问题。
GIL是Python的全局锁,也就是有它在,同一时刻,只能一个线程访问一个全局资源。
所以Python的多线程,完全没办法利用多核CPU。
看上去,这是个很致命的限制,然而,使用时却完全不是这回事。
首先,这只影响CPU密集型应用。而我们的程序大部分不是CPU密集型的。比如你打开资源管理器看CPU占用率,没错,一般是10%以下,我们系统那么多程序在跑,其实大都不是要占非常多的CPU运算能力。
那有GIL的多线程有什么好处呢?简单!比如你所有的线程都访问一个list,由于GIL锁的存在,完全不需要处理访问锁的问题(也就是你丝毫不用担心你在访问的时候,别的线程也访问造成访问冲突)
好了,那CPU密集应用呢?用多进程mutiporcessing(虽然相对多线程麻烦一些)完全可以撑爆你所有的CPU核心。
总起来就是,python用两种并行的方法(多线程、多进程)代替了java等里边的完全多线程,当然,前者比完整的多线程要简单很多,后者用起来比完全多线程麻烦一点。也就是用增加一小部分程序复杂度办法,换取了大部分程序的简化,这可能就是Python之道把。
全部回答
  • 1楼网友:深街酒徒
  • 2021-12-24 01:24
是的. 是的. 是的.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯