检测内存占用情况代码路径报错

在python3.6的pycharm中,在一段检测进程占用内存情况的代码中,由于是开源代码,它指定的路径是Linux系统里的'/proc/{}/status'
而我没有这样的路径,我应该怎么修改
报错如图

D:\Anaconda\anaconda3\envs\pytorch\python.exe D:\GNN_test1\GNN-GCP-master\GNN-GCP-master\neurosat\neurosat_train.py 
Traceback (most recent call last):
  File "D:\GNN_test1\GNN-GCP-master\GNN-GCP-master\neurosat\neurosat_train.py", line 29, in 
    print( "{timestamp}\t{memory}\tBuilding model ...".format( timestamp = timestamp(), memory = memory_usage() ) )
  File "D:\GNN_test1\GNN-GCP-master\GNN-GCP-master\neurosat\util.py", line 11, in memory_usage
    s = next( line for line in open( '/proc/{}/status'.format( pid ) ).read().splitlines() if line.startswith( 'VmSize' ) ).split()
FileNotFoundError: [Errno 2] No such file or directory: '/proc/11612/status'

Process finished with exit code 1

代码片段是这样

def memory_usage():
  pid=os.getpid()
  s = next( line for line in open( '/proc/{}/status'.format( pid ) ).read().splitlines() if line.startswith( 'VmSize' ) ).split()
  return "{} {}".format( s[-2], s[-1] )
#end memory_usage

我大概了解是路径 '/proc/{}/status'有问题,但是不知道应该怎么修改,希望得到解决方法

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
'/proc/{}/status'是Linux系统的路径,如果你在Windows系统中使用该路径,会因为找不到目录而出现FileNotFoundError。因此,如果你想在Windows系统中运行该代码,你需要使用其他的方法来获取进程的内存使用情况。

在Windows系统中,你可以使用psutil库来获取进程的内存使用情况。具体代码如下:

首先,你需要安装psutil库,使用命令pip install psutil即可安装。

然后你需要导入psutil库,并修改memory_usage()函数如下:

import psutil
import os

def memory_usage():
    pid = os.getpid()
    process = psutil.Process(pid)
    mem_info = process.memory_info()
    return "{} {}".format(mem_info.rss, mem_info.vms)

这个函数会返回'rss'和'vms',这两个值分别表示进程的实际内存和虚拟内存的使用情况。你可以根据自己的需要选择其中一个值。

修改后的完整代码如下:

import os
import psutil

def memory_usage():
    pid = os.getpid()
    process = psutil.Process(pid)
    mem_info = process.memory_info()
    return "{} {}".format(mem_info.rss, mem_info.vms)

if __name__=="__main__":
    print(memory_usage())

这样就可以在Windows系统中获取进程的内存使用情况了。
如果我的回答解决了您的问题,请采纳!

以下回答引用自chatGpt, 有用的话,请采纳哇!!!
/proc 文件系统是一个特殊的文件系统,它不是存储在磁盘上的文件系统,而是存储在内存中的文件系统,它提供了有关系统进程和其他信息的访问。因此,该路径只能在 Linux 系统上使用。

如果您正在 Windows 操作系统上运行 Python 代码,您需要使用另一种方法来检测进程占用内存情况。

您可以使用 psutil 模块来检测当前进程的内存使用情况。安装 psutil 模块后,您可以使用以下代码来检测当前进程的内存使用情况:

pythonCopy codeimport psutil

def memory_usage():
    process = psutil.Process(os.getpid())
    mem_info = process.memory_info()
    return mem_info.rss / 1024 / 1024  # 返回以 MB 为单位的内存使用情况

这里,我们使用 psutil.Process 方法获取当前进程的信息,然后使用 memory_info 方法获取进程的内存信息。最后,我们将结果转换为以 MB 为单位的内存使用情况并返回。

以下内容部分参考ChatGPT模型:


这个路径 '/proc/{}/status' 是Linux系统中的一个路径,用于获取进程的状态信息。在Windows系统中,没有这个路径,所以会报错。

你可以使用psutil这个Python库来获取进程的状态信息,它可以在多个操作系统中使用,包括Windows和Linux。

你可以使用psutil库中的Process类来获取进程的状态信息,具体可以参考下面的代码:

import psutil

def memory_usage():
    pid = os.getpid()
    process = psutil.Process(pid)
    memory_info = process.memory_info()
    memory_usage = memory_info.rss / 1024 / 1024 # 单位换算成MB
    return "{} MB".format(memory_usage)

这样就可以在Windows系统中获取进程的内存占用情况了。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

FileNotFoundError: [Errno 2] No such file or directory: '/proc/11612/status'
FileNotFoundError:[Erno 2]没有这样的文件或目录:“/proc/11612/status”

这个错误通常是由于在Windows或者Mac OS系统下运行了linux系统命令下的路径方式,导致文件找不到。
这里的解题思路是:1、将“/proc/11612/status”的路径转换为Windows或Mac OS系统能够理解的命令方式
2、在现有系统中安装Linux模拟环境,从而直接运行代码

需要打开文件才能读取内存占用情况,使用此代码片段,并尝试打开文件即可。不过需要注意,此代码会打开与使用该路径内存占用情况的文件。