Pythonでシェルコマンドとファイル操作のどちらが高価ですか?

Pythonでシェルコマンドとファイル操作のどちらが高価ですか?

docker ps<ID> <name> <port>実行中のドッカーなどのリストを提供します。

でも同じ情報を得ることができます/var/lib/docker/containers/<ID>/config.json。 (ここで、IDは上記のコマンドのIDと同じです。IDが多いほど、ディレクトリも増えます。)

Pythonスクリプトを使用していくつかの値を取得する必要があります。したがって、値suprocess.check_output("<CMD>", shell=True)または検索のより効率的な方法は、コマンドf=open(<FILE PATH>,'r')でもファイルを使用して情報を取得することを理解しています。docker ps

docker psこのリストを公開すると、リストが長くなったり短くなったりすることがあります。それでは、全体的な観点からどちらが高価ですか?どちらが動作しますか?ありがとうございます!

ベストアンサー1

ファイルを直接操作するのが正しいアプローチです。

docker psファイルが情報を取得するためにも使用されることがわかっている場合は、Pythonが直接ファイルを処理するだけです。

subprocess呼び出しを使用するとdocker外部プロセスのコストがかかり、外部プロセスをフォークすると常にコストがかかります。

簡単なPythonコードを使う:

def get_container_info(container_id):
    path = '/var/lib/docker/containers/{}/config.json'.format(container_id)
    with open(path, 'r') as f:
        d = json.load(f)
        return d['ID'], d['Name'], d['NetworkSettings']['Ports']

ipythonインタラクティブシェルから:

%timeit subprocess.check_output('docker ps', shell=True)
10 loops, best of 3: 56.8 ms per loop

%timeit get_container_info('<container_id>')
10000 loops, best of 3: 79.6 µs per loop

おすすめ記事