Bug #1278 ยป process_monitor.py
1 |
import sys |
---|---|
2 |
import os |
3 |
import time |
4 |
|
5 |
def print_mem_usage(pid): |
6 |
"""
|
7 |
Get system resources used by process pid
|
8 |
|
9 |
@param pid process id
|
10 |
|
11 |
@returns dict of {"pid":pid, "memory":mem_usage}
|
12 |
"""
|
13 |
columns = "%cpu,%mem,etime" |
14 |
ps_out = os.popen('ps -p %d -o %s' % (pid, columns)).readlines() |
15 |
if len(ps_out) == 2: |
16 |
out_list = ps_out[1].rstrip().split() |
17 |
col_list = columns.split(",") |
18 |
out = dict(zip(col_list, out_list)) |
19 |
print pid, out |
20 |
return True |
21 |
else: |
22 |
return False |
23 |
|
24 |
def main(pid_list): |
25 |
"""
|
26 |
Iterate over list of pids; while pids exist, print cpu usage etc
|
27 |
"""
|
28 |
while len(pid_list) > 0: |
29 |
time.sleep(5) |
30 |
_pid_list = [] |
31 |
for pid in pid_list: |
32 |
if print_mem_usage(int(pid)): |
33 |
_pid_list.append(pid) |
34 |
pid_list = _pid_list |
35 |
|
36 |
if __name__ == "__main__": |
37 |
main(sys.argv[1:]) |
38 |
|