#!/usr/bin/env python3
#-*- coding: UTF-8 -*-

"""
每秒打印一下进程的内存使用情况
"""

import os
import datetime
import argparse
from mtls.ps.mem import mem_info_generator
from mtls.ps.mem import global_connection_memory_generator
from mtls.kits import fileformat


name = os.path.basename(__file__)

def parser_cmd_args():
    """
    处理命令行参数
    """
    args = argparse.ArgumentParser(name)
    args.add_argument('--user',type=str,default='')
    args.add_argument('--password',type=str,default='')
    args.add_argument('--port',type=int,default=3306)
    args.add_argument("pid",type=int)
    return args.parse_args()


def main():
    args = parser_cmd_args()
    pid = args.pid
    if args.user != '':
        for mem_info in mem_info_generator(pid):
            print(f"{datetime.datetime.now().isoformat(' ','seconds')}  pid={pid}   vms={fileformat(mem_info.vms)}  rss={fileformat(mem_info.rss)}  dirty={fileformat(mem_info.dirty)}")
    else:
        g = global_connection_memory_generator()
        next(g)
        for mem_info in mem_info_generator(pid):
            global_conn_mem_size = next(g)
            print(f"{datetime.datetime.now().isoformat(' ','seconds')}  pid={pid}   vms={fileformat(mem_info.vms)}  rss={fileformat(mem_info.rss)}  global_conn_mem={fileformat(global_conn_mem_size)}")


if __name__ == "__main__":
    main()