要获取系统的GPU占用率,你可以使用第三方库psutil来获取进程信息,并使用nvidia-smi命令行工具来获取GPU信息。然后将数据写入CSV文件。\n\n首先,确保你已经安装了psutil库。你可以使用以下命令安装它:\n\nshell\npip install psutil\n\n\n然后,使用以下代码获取系统的GPU占用率:\n\npython\nimport subprocess\n\ndef get_gpu_usage():\n # 使用nvidia-smi命令行工具获取GPU信息\n output = subprocess.check_output(['nvidia-smi', '--format=csv,noheader,nounits', '--query-gpu=utilization.gpu']).decode().strip()\n gpu_usage = [int(x) for x in output.split('\n')]\n return gpu_usage\n\ngpu_usage = get_gpu_usage()\nprint(gpu_usage)\n\n\n接下来,使用以下代码获取指定进程名称的GPU占用率:\n\npython\nimport psutil\n\ndef get_process_gpu_usage(process_name):\n gpu_usage = []\n for proc in psutil.process_iter(['name', 'pid']):\n if process_name.lower() in proc.info['name'].lower():\n pid = proc.info['pid']\n try:\n cmdline = open(f"/proc/{pid}/cmdline", "rb").read().decode('utf-8')\n if 'python' in cmdline:\n # 使用nvidia-smi命令行工具获取进程的GPU占用率\n output = subprocess.check_output(['nvidia-smi', '--format=csv,noheader,nounits', f'--query-compute-apps=pid,utilization.gpu', f'--pid={pid}']).decode().strip()\n gpu_usage.append((pid, int(output.split(',')[1])))\n except:\n pass\n return gpu_usage\n\nprocess_name = 'your_process_name' # 替换为你要查找的进程名称\ngpu_usage = get_process_gpu_usage(process_name)\nprint(gpu_usage)\n\n\n最后,将数据写入CSV文件,使用以下代码:\n\npython\nimport csv\n\ndef write_to_csv(data, filename):\n with open(filename, 'w', newline='') as file:\n writer = csv.writer(file)\n writer.writerow(['PID', 'GPU Usage'])\n writer.writerows(data)\n\nfilename = 'gpu_usage.csv' # 替换为你要保存的文件名\nwrite_to_csv(gpu_usage, filename)\n\n\n这样就能将GPU占用率数据写入到名为gpu_usage.csv的CSV文件中了。请确保你有足够的权限来读取进程信息和执行nvidia-smi命令行工具。


原文地址: https://www.cveoy.top/t/topic/pP9o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录