首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python获取docker统计信息时出现的问题

使用Python获取docker统计信息时出现的问题
EN

Stack Overflow用户
提问于 2021-08-06 01:59:01
回答 1查看 82关注 0票数 1

通过使用Python的docker模块,我尝试使用Python获取docker统计信息。代码是:

代码语言:javascript
运行
复制
import docker
cli = docker.from_env()

for container in cli.containers.list():
    stream = container.stats()
    print(next(stream))

我运行了6个docker容器,但是当我运行代码时,它需要几秒钟来获取所有容器的统计数据,所以有什么好方法可以立即获取统计数据吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-06 03:25:42

Docker的统计数据自然需要一小段时间,其中很大一部分是等待通过流的下一个值

代码语言:javascript
运行
复制
$ time docker stats 1339f13154aa --no-stream
CONTAINER ID   NAME                CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O   PIDS
...
real    0m1.556s
user    0m0.020s
sys 0m0.015s

您可以通过在parralell中运行命令来减少执行时间,而不是一次运行一个命令。

要实现这一点,您可以使用出色的threadingmultiprocessing库。

Digital Ocean提供了一个很好的tutorial,告诉您如何使用ThreadPoolExecutor来实现这一点

代码语言:javascript
运行
复制
import requests
import concurrent.futures

def get_wiki_page_existence(wiki_page_url, timeout=10):
    response = requests.get(url=wiki_page_url, timeout=timeout)

    page_status = "unknown"
    if response.status_code == 200:
        page_status = "exists"
    elif response.status_code == 404:
        page_status = "does not exist"

    return wiki_page_url + " - " + page_status

wiki_page_urls = [
    "https://en.wikipedia.org/wiki/Ocean",
    "https://en.wikipedia.org/wiki/Island",
    "https://en.wikipedia.org/wiki/this_page_does_not_exist",
    "https://en.wikipedia.org/wiki/Shark",
]
with concurrent.futures.ThreadPoolExecutor() as executor:
    futures = []
    for url in wiki_page_urls:
        futures.append(executor.submit(get_wiki_page_existence, wiki_page_url=url))
    for future in concurrent.futures.as_completed(futures):
        print(future.result())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68675259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档