有没有办法使psutil输出在两次运行之间保持一致?

时间:2019-09-04 10:51:52

标签: python python-3.x sed psutil

我正在尝试从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然后处理数据切割,但是由于有时顺序错误,最终输出文件会出现乱码。

有没有办法保持一致?先记忆,然后命名

1 个答案:

答案 0 :(得分:0)

如果要对其进行排序,只需使用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'}