python 充分利用CPU

当利用python处理大规模数据或者运行一些耗时较长的程序时,往往会发现程序运行时CPU并没有跑满,哪怕开了多线程后CPU利用率仍然不高。这是因为在默认情况下,Python 程序是单个进程,使用单 CPU 核心执行,这意味着多核处理器只使用了一个核。「一核有难九核围观」意味着超过 50% 的算力都会被浪费。这篇文章将介绍如何解决这种情况。

多线程无法增加cpu使用率的原因

GIL 的全程为 Global Interpreter Lock ,意即全局解释器锁。在 Python 语言的主流实现 CPython 中,GIL 是一个货真价实的全局线程锁,在解释器解释执行任何 Python 代码时,都需要先获得这把锁才行,在遇到 I/O 操作时会释放这把锁。如果是纯计算的程序,没有 I/O 操作,解释器会每隔 100 次操作就释放这把锁,让别的线程有机会执行(这个次数可以通过 sys.setcheckinterval 来调整)。所以虽然 CPython 的线程库直接封装操作系统的原生线程,但 CPython 进程做为一个整体,同一时间只会有一个获得了 GIL 的线程在跑,其它的线程都处于等待状态等着 GIL 的释放。这就意味着哪怕开了多线程CPU使用率仍然不会很高。

如何充分使用多核跑程序

有三个办法

1. multiprocessing

multiprocessing 是多进程标准库,让多进程的 python 程序编写简化到类似多线程的程度,通过多进程的方式使用多个CPU核心。

2. C 语言扩展机制

如果不想用多进程这样重量级的解决方案,可

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在社会经济发展迅速,人们的工作压力越来越来,长时间紧张繁忙的工作压力使人们精神紧绷,为了更好的工作并提高工作效率,这就需要短暂的休息让紧绷的精神放松一下。缓解压力的方式也很多,要选择适合自己的方式,玩游戏也是众多缓解压力方式之一。看电影、电视或者音乐也可以缓解压力,但是人们只是能被动的观看与倾听,并不能参与其中进行互动。而游戏有着很好交互性,玩家并不是仅仅在观看角色在如何移动,而是也要融入角色当中进行操作。在游戏中,玩家的行为也会对游戏产生影响。游戏除了让人娱乐之外还可以作为缓解压力的方式,在休息的时候可以不用想其他事情,这样压力就会得到缓解。个人计算机刚刚开始普及的时候,游戏并不能被广泛接受,最主要的原因就是不能充分发挥个人计算机的性能,游戏程序不能最大化使用 PC 机器的硬件资源, 机器与人的交互做的还不够好。由此导致个人计算机早起游戏画面差,操作感僵硬, 可玩性不高,所以不被人们所接受。但是随着切硅技术的提升导致CPU性能的飞跃,以及 C,C++,Java,Python 等等一系列高级语言的开发,游戏对硬件资源的利用率提 高,现在游戏各方面都有了质的飞跃。从 20 世纪末期暴雪公司下的《星际争霸》《魔兽世界》,再到现如今的《英雄联盟》《守望先锋》等等都给玩家带来极大的乐 趣与良好的游戏体验。当然,除了游戏本身的优秀质量外,可以较广泛的支持不同 硬件设备及操作系统的功能也不容忽视,高中低端的个人计算机都有着不错的流畅度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值