加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何准确测量python进程的CPU时间?

发布时间:2020-12-20 13:21:45 所属栏目:Python 来源:网络整理
导读:我正在设计一个分布式系统,主节点在远程机器上启动一堆工作节点.由于我使用的是 Python,并希望利用每个物理机器具有多个内核的事实,我希望每台机器运行多个工作节点(GIL等).另外,每个工作节点的每个“周期”所需的CPU数量可能会有很大差异.然而,我可以将工作
我正在设计一个分布式系统,主节点在远程机器上启动一堆工作节点.由于我使用的是 Python,并希望利用每个物理机器具有多个内核的事实,我希望每台机器运行多个工作节点(GIL等).另外,每个工作节点的每个“周期”所需的CPU数量可能会有很大差异.然而,我可以将工作节点分成很多部分,我的初始策略是产生比每台机器核心多得多的工作节点.原因在于,如果一些节点需要更多的CPU,它们可以占用核心更长的时间. (如果每个节点已经受CPU限制,则不会突然需要更多的CPU.)

这引出了一个问题:如何准确地测量python进程的CPU时间?

我无法天真地测量时间,我需要专门为特定过程花费的时间.也就是说,对于每个进程,我想要一个数字X,它尽可能准确地表示专门在该进程上花费的CPU资源量,而不管不相关的进程. (我一直在研究Python的getrusage,但它似乎在ubuntu上只给出了2个小数点的精度,这是不够的.编辑:如果我直接在C中使用getrusage(),也会发生这种情况;最多0.01秒精度.关闭,但是没有雪茄)

我的具体用例是测量每个节点周期的CPU时间,从开始到结束,其中End在Start后约0-30ms发生.

最好的答案是在Python中以可移植的方式执行此操作.需要使用C扩展的方法很好.

解决方法

至少对于linux来说,快速回答是使用getrusage以及具有更高分辨率计时器的内核.

我的初始测试给出了10ms的可怕精度的原因是因为显然64位ubuntu默认配置为100hz计时器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读