如何用Python来获取cpu使用率,代码是什么
Admin 2022-09-02 群英技术资讯 450 次浏览
请获取某段时间的cpu的占有率,以持久化形式保存。
代码:
import psutil import time # cpu_res = psutil.cpu_percent() # print(cpu_res) # 每一秒获取获取cpu的占有率 --->持久化保存 # 如何将时间和对应的cpu占有率去匹配 while True: # 获取当前时间和cpu的占有率 t = time.localtime() cpu_time = '%d:%d:%d' % (t.tm_hour, t.tm_min, t.tm_sec) cpu_res = psutil.cpu_percent() print(cpu_res) # 保存在文件中 with open('cpu.txt', 'a+') as f: f.write('%s %s \n' % (cpu_time, cpu_res)) time.sleep(1)
1.psutil模块表示获取本机的硬件信息
2.psutil.cpu_percent表示获取cpu的占有率
3.用元组时间可以准确获取自己想获得的时、分、秒
4.将时间——>cpu占有率写入文件cpu.txt中。
5.time.sleep(1) 表示休眠时间,等待1秒再执行。
输出结果:
当利用python处理大规模数据或者运行一些耗时较长的程序时,往往会发现程序运行时CPU并没有跑满,哪怕开了多线程后CPU利用率仍然不高。
这是因为在默认情况下,Python 程序是单个进程,使用单 CPU 核心执行,这意味着多核处理器只使用了一个核。
「一核有难九核围观」意味着超过 50% 的算力都会被浪费。这篇文章将介绍如何解决这种情况。
GIL 的全程为 Global Interpreter Lock ,意即全局解释器锁。
在 Python 语言的主流实现 CPython 中,GIL 是一个货真价实的全局线程锁,在解释器解释执行任何 Python 代码时,都需要先获得这把锁才行,在遇到 I/O 操作时会释放这把锁。
如果是纯计算的程序,没有 I/O 操作,解释器会每隔 100 次操作就释放这把锁,让别的线程有机会执行(这个次数可以通过 sys.setcheckinterval 来调整)。
所以虽然 CPython 的线程库直接封装操作系统的原生线程,但 CPython 进程做为一个整体,同一时间只会有一个获得了 GIL 的线程在跑,其它的线程都处于等待状态等着 GIL 的释放。
这就意味着哪怕开了多线程CPU使用率仍然不会很高。
有三个办法
multiprocessing 是多进程标准库,让多进程的 python 程序编写简化到类似多线程的程度,通过多进程的方式使用多个CPU核心。
如果不想用多进程这样重量级的解决方案,可以改用 C/C++。当然,你也不用做的这么绝,只需要把关键部分用 C/C++ 写成 Python 扩展,其它部分还是用 Python 来写,让 Python 的归 Python,C 的归 C。一般计算密集性的程序都会用 C 代码编写并通过扩展的方式集成到 Python 脚本里(如 NumPy 模块)。这样在扩展里就完全可以用 C 创建原生线程,就可以充分利用 CPU 的计算资源了。
不过,写 Python 扩展总是让人觉得很复杂。好在 Python 还有另一种与 C 模块进行互通的机制 : ctypes。ctypes 与 Python 扩展不同,它可以让 Python 直接调用任意的 C 动态库的导出函数。你所要做的只是用 ctypes 写些 python 代码即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家分享Pytorch怎样进行三角函数计算,对新手学习Pytorch函数具有一定的参加和学习价值,感兴趣的朋友可以看一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
这篇文章主要为大家介绍了python引入requests报错could not be resolved解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
内容介绍前言开发工具环境搭建主要代码前言不要在用手敲生成Excel数据报表了,用Python自动生成Excel数据报表!废话不多说让我们愉快地开始吧~开发工具Python版本:3.6.4相关模块:p
本文主要介绍了OpenCV中的分水岭算法、图像金字塔对图像进行分割的方法。文中的示例代码讲解详细,对我们学习OpenCV有一定的帮助,需要的可以参考一下
这篇文章主要为大家详细介绍了python实现双向链表原理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008