13.14 限制内存和CPU的使用量

    模块能同时执行这两个任务。例如,要限制CPU时间,可以像下面这样做:

    程序运行时,SIGXCPU 信号在时间过期时被生成,然后执行清理并退出。

    1. import resource
    2.  
    3. soft, hard = resource.getrlimit(resource.RLIMIT_AS)
    4. resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))

    像这样设置了内存限制后,程序运行到没有多余内存时会抛出 异常。

    在本节例子中,setrlimit() 函数被用来设置特定资源上面的软限制和硬限制。软限制是一个值,当超过这个值的时候操作系统通常会发送一个信号来限制或通知该进程。硬限制是用来指定软限制能设定的最大值。通常来讲,这个由系统管理员通过设置系统级参数来决定。尽管硬限制可以改小一点,但是最好不要使用用户进程去修改。

    需要注意的是本节内容只能适用于Unix系统,并且不保证所有系统都能如期工作。比如我们在测试的时候,它能在Linux上面正常运行,但是在OS X上却不能。

    原文: