V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ma6174
V2EX  ›  Python

python统计外部程序的最大内存占用数问题

  •  
  •   ma6174 ·
    ma6174 · 2013-03-08 21:38:01 +08:00 · 3771 次点击
    这是一个创建于 4305 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在用python做一个ACM在线测试系统的后台评判程序,用户提交代码(可能有C/C++/JAVA)之后,我们在服务器(Linux系统)上进行编译,然后运行,一个很重要的问题就是获得程序的执行时间和程序的最大内存占用率。由于C/C++程序执行很快,大部分程序不到1秒就执行完了,最快的可能执行时间不超过1毫秒。
    检测运行时间容易,检测内存我就不知道如何办了。原来用过一个方法,就是用python的subprocess运行用户程序,得到pid,然后用glan模块去循环检测内存占用率,对比得到最大内存占用率。这样做对于执行时间长点的程序还行,但是对于执行时间很短的程序就检测不到了,用户的程序在我启动检测程序之前就结束了。
    想问问各位大神,有没有其他好的方法检测这样的程序的最大内存占用率?或者说有没有方法定时阻塞外部程序的执行然后再检测?再或者说如果用GDB调试的话能用python去控制和检测吗?
    8 条回复    1970-01-01 08:00:00 +08:00
    lynx
        1
    lynx  
       2013-03-08 21:58:58 +08:00   ❤️ 1
    https://github.com/lodevil/Lo-runner
    这个是C写的python扩展
    可以精确获取程序运行的时间、内存消耗,安全方面可以限定程序的系统调用和文件访问

    这个是一个例子:
    https://github.com/lodevil/Lo-runner/blob/master/demo/test.py
    adieu
        2
    adieu  
       2013-03-08 22:04:31 +08:00
    可以看看这个脚本 https://github.com/pixelb/scripts/blob/master/scripts/ps_mem.py

    可能可以借鉴里面的办法
    lynx
        3
    lynx  
       2013-03-08 22:55:58 +08:00
    ACM测评需要做到很精确,你只用python不可能做到这一点的
    hfeeki
        4
    hfeeki  
       2013-03-08 23:21:18 +08:00
    简单点,从文件里面读取。 从 /proc/ 目录下面读取,cpu,mem 等等信息都有,这是很多相关工具的通用做法。
    ma6174
        5
    ma6174  
    OP
       2013-03-09 12:30:03 +08:00
    感谢各位!一楼的程序很好!再封装一下就可以了!谢谢!
    josephshen
        6
    josephshen  
       2013-03-09 12:48:12 +08:00
    psutil 完爆这种需求
    lynx
        7
    lynx  
       2013-03-09 21:37:28 +08:00
    读取/proc相关信息的想法这个就放弃吧,psutil之类都别想了
    可能调用的时候你要判定的程序已经跑完了
    ACM的程序很多在1毫秒内跑完的
    clowwindy
        8
    clowwindy  
       2013-03-09 21:52:47 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1182 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:22 · PVG 02:22 · LAX 10:22 · JFK 13:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.