1
proc/pid/statusにアクセスしてプロセスに対してVmPeakを取得する必要があります。プロセスが長くなると別のプロセスを使用して取得できますスレッドは小さいプロセスのために私はいつもエラー(そのようなプロセスはありません)があります。私は仕事を完了するために使用できる方法や回避策があります。私はPython 2.7をuisngしています、これまでのところ私は以下を行っています..終了後またはプロセスが終了する直前にproc/pid/statusを取得する方法はありますか?
import os
import subprocess
import threading
from shutil import copyfile
import time
rp = None
br = 0
pid = -1
class MemoryThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global br, rp
while br == 0:
try:
pid = rp.pid
except Exception as e:
pid = -1
if not pid == -1:
try:
pp = open("/proc/" + str(pid) + "/status")
st = "X"
for l in pp.readlines():
if l.startswith("State:"):
st = l.split(":", 1)[1].strip().split(' ')[0]
if st == "R":
copyfile("/proc/" + str(pid) + "/status", "status.txt")
print "copied"
pp.close()
except Exception as ee:
print ee
th = MemoryThread()
th.start()
cmd = "/home/mursalin/Desktop/A"
cmd = cmd.split(" ")
path_stdout = "/home/mursalin/Desktop/stdout.txt"
path_stderr = "/home/mursalin/Desktop/stderr.txt"
path_stdin = "/home/mursalin/Desktop/inp.txt"
rp = subprocess.Popen(cmd, stdin=open(path_stdin, "r"), stdout=False, stderr=open(
path_stderr, "w"), shell=False, preexec_fn=False)
rp.communicate()
br = 1