Displaying system information using psutil

  • Context: Python 
  • Thread starter Thread starter zak100
  • Start date Start date
  • Tags Tags
    Information System
Click For Summary
SUMMARY

The forum discussion revolves around troubleshooting a Python script that utilizes the psutil library to display system information. The initial error encountered was an AttributeError due to the incorrect use of get_memory_info instead of memory_info on the Process object. After correcting this, the user faced an issue with CPU utilization reporting zero. The final solution involved using cpu_percent(interval=1) to accurately measure CPU usage during the execution of the program.

PREREQUISITES
  • Familiarity with Python programming
  • Understanding of the psutil library (version 5.8.0 or later)
  • Basic knowledge of system resource monitoring concepts
  • Experience with handling exceptions in Python
NEXT STEPS
  • Explore the psutil.memory_info() method for detailed memory statistics
  • Learn about the cpu_percent() method and its parameters for accurate CPU usage tracking
  • Investigate the psutil.disk_usage() function for comprehensive disk space analysis
  • Study exception handling in Python to prevent runtime errors
USEFUL FOR

Python developers, system administrators, and anyone interested in monitoring system performance using the psutil library.

zak100
Messages
462
Reaction score
11
TL;DR
I am trying to display system information. I found some commands but I am getting a sytax error
Hi,
I am getting following error message:
Traceback (most recent call last):
File "/home/zulfi/PycharmProjects/Classes/psutilPrintInfo.py", line 31, in <module>
obj_Counting_SysInfo.main()
File "/home/zulfi/PycharmProjects/Classes/psutilPrintInfo.py", line 27, in main
self.system_info()
File "/home/zulfi/PycharmProjects/Classes/psutilPrintInfo.py", line 16, in system_info
mem = process.get_memory_info()[0] / float(2 ** 30) # memory in GB
AttributeError: 'Process' object has no attribute 'get_memory_info'

I have written the following code which should display the system information of a simple program which I am running as a function:
Python:
import psutil

import osclass Counting_SysInfo:

    def __init__(self, i):

        self.i = i    def Print_Numbers(self):

        for i in range(50):

            print (i)    def system_info(self):

        # return the memory usage in MB

        self.Print_Numbers()

        process = psutil.Process(os.getpid())

        mem = process.get_memory_info()[0] / float(2 ** 30)  # memory in GB

        cpu = process.cpu_percent() / psutil.cpu_count()

        disk = process.disk_usage(part.mountpoint).percent  # https://github.com/giampaolo/psutil/blob/master/scripts/disk_usage.py

        vMem = int(process.virtual_memory().available)

        print(process.memory_info().rss)  # in bytes

        RSS = process.memory_info().rss

        # https://stackoverflow.com/questions/17990227/whats-the-unit-of-rss-in-psutil-process-get-memory-info

        pageFaults = process.memory_info().pfaults  # https://readthedocs.org/projects/giamptest/downloads/pdf/latest/

        print("mem= ", mem, "cpu= ", cpu, 'disk= ',disk, "VMem= ", vMem, "RSS= ", RSS, "page faults=", pageFaults )    def main(self):

        self.system_info()if __name__ == "__main__":

    obj_Counting_SysInfo = Counting_SysInfo(10)

    obj_Counting_SysInfo.main()

Somebody please guide me how to solve this problem.

Zulfi.
 
Technology news on Phys.org
Looking at the documentation for the Process class in psutil, there is no member named get_memory_info, which is exactly what the error message says. The Process class apparently has a member named memory_info().
 
  • Like
Likes   Reactions: sysprog and pbuk
Hi,
Thanks, I solved the above but I am getting cpu utilization zero.

Code:
def systeminfo(self):
        print("memory usage=", psutil.Process(os.getpid()).memory_info()[0])
        print(psutil.disk_usage('/'))
        print(psutil.Process(os.getpid()).cpu_percent(interval=1))
        print("virtual mem= ", psutil.virtual_memory().available)
        # print(psutil.Process(os.getpid()).memory_info().pfaults)
        print("rss=", psutil.Process(os.getpid()).memory_info().rss)
        self.selectionSort()
        print(psutil.Process(os.getpid()).cpu_percent(interval=1))    def main(self):
        self.generate1000_5digit_RandomNum()
        self.systeminfo()if __name__ == "__main__":
    objSSSort = SSSort(1000)
    objSSSort.main()

I am trying with 1000 elements in the sorting list:

Following is one portion of my output:
memory usage= 15269888
sdiskusage(total=982900588544, used=141417086976, free=791483416576, percent=15.2)
0.0
virtual mem= 12050067456
rss= 15269888
(0, 10000)
Somebody please guide me.

Zulfi.