読者です 読者をやめる 読者になる 読者になる

PythonをつかったPythonプロセスのCPUとメモリの使用率ロガー

簡単お手軽な特定プロセスのCPU/メモリ使用率ロガー

ちょっと必要があって、プロセスのCPUとメモリ使用率を記録するスクリプトを書いた。
あんまり需要ないかもしれないけど、あったら便利。
先のシェルスクリプトと組み合わせるとログファイルなんかも良い感じです。

livelifeulove.hatenablog.com

スクリプト本体

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import psutil
import time
import csv
import sys

#標準入力からのファイル名の受け取り
argvs = sys.argv
argc = len(argvs)
if (argc < 2):
    saveFileName = 'NoFileName.csv'
else:
    saveFileName = argvs[1]

intervalSec = 1

val_data = []
tmp_data = []

# ヘッダ部分の作成
fh = open(saveFileName,'a')
writer = csv.writer(fh)
writer.writerow(['TotalMemorySize:',psutil.virtual_memory().total])
writer.writerow(['NUM_CPUS:',psutil.NUM_CPUS])
writer.writerow([])
writer.writerow(['Time','Name','pid','P.CPU_Percent','P.Memory_Percent'])
fh.close()

tmp_data = []
# CPUメモリの情報記録
while True:
    process = filter(lambda p: p.name == "python", psutil.process_iter())
    
    fh = open(saveFileName,'a')
    writer = csv.writer(fh)
    
    # プロセスごとの情報取得
    for i in process:
      retval = [time.time(),i.name,i.pid,i.get_cpu_percent(interval=0),i.get_memory_percent()]
      print retval
      writer.writerow(retval)
    
    # データの書き出し
    fh.close()
    time.sleep(intervalSec)

参考サイト

ありがとうございまっす!

meganehouser.hatenablog.com