【问题标题】:Is there a way to make the psutil output consistent between runs?有没有办法使 psutil 输出在运行之间保持一致?
【发布时间】:2020-01-07 06:10:24
【问题描述】:

我正在尝试从psutil 中获取一些数据。具体来说,我想按此顺序获取memory_percentagename 数据。 代码如下:

def getListProcessMem():
    for proc in psutil.process_iter(attrs=None, ad_value=None):
        procInfo = proc.as_dict(attrs=['memory_percent', 'name']) 
        procInfo = proc.as_dict(attrs=['name', 'cpu_percent'])
        theOneProcessList.append(procInfo)
    return(theOneProcessList)

getListProcessMem()
output = theOneProcessList
with open('zawarudo.txt', 'w') as f:
    for processes in theOneProcessList:
        f.write("%s\n" % processes)

问题是,有时输出顺序是错误的,最终会先写入进程的name,然后再写入mem_prec

sed然后处理数据的切割,但由于有时顺序错误,最终输出文件是乱码。

有没有办法保持一致?先内存再命名

【问题讨论】:

    标签: python python-3.x sed psutil


    【解决方案1】:

    如果您想对其进行排序,只需使用dict(sorted(processes.items())) 而不是processes

    对dict的迭代是按插入顺序完成的,下面是示例测试代码

    >>> p1 = { 'name': 'dummy', 'mem':33}
    >>> p2 = {'mem':33, 'name':'dummy'}
    
    >>> print ("%s\n" % p1)
    {'name': 'dummy', 'mem': 33}
    >>> print ("%s\n" % p2)
    {'mem': 33, 'name': 'dummy'}
    
    >>> print ("%s\n" % dict(sorted(p1.items())))
    {'mem': 33, 'name': 'dummy'}
    >>> print ("%s\n" % dict(sorted(p2.items())))
    {'mem': 33, 'name': 'dummy'}
    
    
    
    
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      相关资源
      最近更新 更多