Last active
September 29, 2021 18:05
-
-
Save knu2xs/f79fc37e3054258c5edf1af8bd5a55fe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import psutil | |
import platform | |
from datetime import datetime | |
def get_size(bytes, suffix="B"): | |
""" | |
Scale bytes to its proper format | |
e.g: | |
1253656 => '1.20MB' | |
1253656678 => '1.17GB' | |
""" | |
factor = 1024 | |
for unit in ["", "K", "M", "G", "T", "P"]: | |
if bytes < factor: | |
return f"{bytes:.2f}{unit}{suffix}" | |
bytes /= factor | |
print("="*40, "System Information", "="*40) | |
uname = platform.uname() | |
print(f"System: {uname.system}") | |
print(f"Node Name: {uname.node}") | |
print(f"Release: {uname.release}") | |
print(f"Version: {uname.version}") | |
print(f"Machine: {uname.machine}") | |
print(f"Processor: {uname.processor}") | |
# Boot Time | |
print("="*40, "Boot Time", "="*40) | |
boot_time_timestamp = psutil.boot_time() | |
bt = datetime.fromtimestamp(boot_time_timestamp) | |
print(f"Boot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}") | |
# let's print CPU information | |
print("="*40, "CPU Info", "="*40) | |
# number of cores | |
print("Physical cores:", psutil.cpu_count(logical=False)) | |
print("Total cores:", psutil.cpu_count(logical=True)) | |
# CPU frequencies | |
cpufreq = psutil.cpu_freq() | |
print(f"Max Frequency: {cpufreq.max:.2f}Mhz") | |
print(f"Min Frequency: {cpufreq.min:.2f}Mhz") | |
print(f"Current Frequency: {cpufreq.current:.2f}Mhz") | |
# CPU usage | |
print("CPU Usage Per Core:") | |
for i, percentage in enumerate(psutil.cpu_percent(percpu=True, interval=1)): | |
print(f"Core {i}: {percentage}%") | |
print(f"Total CPU Usage: {psutil.cpu_percent()}%") | |
# Memory Information | |
print("="*40, "Memory Information", "="*40) | |
# get the memory details | |
svmem = psutil.virtual_memory() | |
print(f"Total: {get_size(svmem.total)}") | |
print(f"Available: {get_size(svmem.available)}") | |
print(f"Used: {get_size(svmem.used)}") | |
print(f"Percentage: {svmem.percent}%") | |
print("="*20, "SWAP", "="*20) | |
# get the swap memory details (if exists) | |
swap = psutil.swap_memory() | |
print(f"Total: {get_size(swap.total)}") | |
print(f"Free: {get_size(swap.free)}") | |
print(f"Used: {get_size(swap.used)}") | |
print(f"Percentage: {swap.percent}%") | |
partitions = psutil.disk_partitions() | |
for partition in partitions: | |
print(f"=== Device: {partition.device} ===") | |
print(f" Mountpoint: {partition.mountpoint}") | |
print(f" File system type: {partition.fstype}") | |
try: | |
partition_usage = psutil.disk_usage(partition.mountpoint) | |
except PermissionError: | |
# this can be catched due to the disk that | |
# isn't ready | |
continue | |
print(f" Total Size: {get_size(partition_usage.total)}") | |
print(f" Used: {get_size(partition_usage.used)}") | |
print(f" Free: {get_size(partition_usage.free)}") | |
print(f" Percentage: {partition_usage.percent}%") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment