m0_53782829 2023-04-09 10:45 采纳率: 50%
浏览 40
已结题

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

在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 <module>
    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'有问题,但是不知道应该怎么修改,希望得到解决方法

  • 写回答

5条回答 默认 最新

  • 极客智能体-在线 2023-04-10 12:01
    关注

    以下答案由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系统中获取进程的内存使用情况了。
    如果我的回答解决了您的问题,请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比