【问题标题】:Docker sampling measurements in pythonpython中的Docker采样测量
【发布时间】:2021-05-15 18:05:08
【问题描述】:

我想获取有关在 docker 容器中运行的应用程序的 CPU 使用情况的数据。 我想以毫秒为单位收集准确的时间数据。 我在 python 中找到了 docker api lib,可以从 docker stats 获取信息。 我写了这样的东西

import docker 
import time

client = docker.from_env()
con = client.containers.get("docker-tutorial")
cpu = []

for i in range(0,10):
    status = con.stats(decode=None, stream = False)
    cpu.append([status['cpu_stats']['cpu_usage']['total_usage'], time.time()])

我已经得到了我想要的信息,但是我的测量之间的时间大约是 2 秒,太长了。 有没有办法在 python 或其他方式中更快地做到这一点? 我正在使用 Windows 10。

【问题讨论】:

    标签: python docker cpu-usage measure


    【解决方案1】:

    不确定这两秒是从哪里来的,但是当我尝试按如下方式运行它时:

    import docker
    import time
    
    client = docker.from_env()
    con = client.containers.get("docker-tutorial")
    cpu = []
    
    for status in con.stats(decode=True, stream=True):
        cpu.append([status['cpu_stats']['cpu_usage']['total_usage'], time.time()])
    

    我每隔一秒而不是每两秒得到一个结果。

    不过这个seems to be a lower limit,所以我认为你不能做得更好。

    如果您想限制为 10 个条目,您可以使用 ziprange

    import docker
    import time
    
    client = docker.from_env()
    con = client.containers.get("docker-tutorial")
    cpu = []
    
    for _, status in zip(range(10), con.stats(decode=True, stream=True)):
        cpu.append([status['cpu_stats']['cpu_usage']['total_usage'], time.time()])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多