python sleep用于内存消耗测量,而不是acu

2024-09-27 21:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本(runner.py),它定期测量进程的内存消耗。为了监视内存消耗,我使用了一个名为ProcessTimer.py的助手类。processtimer基于给定的解决方案here实现。在

解决方案基于轮询。所以有一个while-循环。在这个while-循环内存消耗被测量,然后线程休眠一段时间以确保定期测量。在我的例子中,睡眠时间是500毫秒。但是,我的问题是测量不是每500毫秒进行一次。测量之间的时间似乎是任意的,我不知道为什么没有每500毫秒完成一次(根据time.sleep(.500))。在

在这里您可以看到我的测量值的CSV输出。第一列是时间(以秒为单位),第二列是内存消耗:

time,rss_mem
0.0,12.38
1.1,101.89
2.3,110.74
3.4,110.79
4.5,113.61
5.7,101.6
6.8,102.44
8.0,104.28
9.1,104.48
10.3,108.13
11.4,102.64
12.6,102.83
13.7,102.86
14.9,102.86

正如您所看到的,每次测量之间总是有大约1.1秒的时间,即使while-循环(用于测量另一个进程的内存消耗)应该每500毫秒执行一次,这是为什么?在

相关代码跑步者.py可以看到here。 helper类进程计时器.py可以看到here。在


Tags: 内存py脚本heretime进程助手时间
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:04

time.sleep(.5)不能确保循环每秒执行两次;它只会休眠半秒。如果代码的其余部分需要1秒的时间来执行,那么每次迭代将花费.5+1=1.5秒。在

如果您想以更精确的间隔进行测量,则需要测量调用ptimer.poll()所需的时间,然后从0.5秒中减去这个时间。在

但是从上面的数据来看,ptimer.poll()似乎需要大量的时间。您可能必须首先优化内存测量代码,以便能够以您想要的速度进行测量。在

相关问题 更多 >

    热门问题