相关疑难解决方法(0)

如何限制堆大小?

我有时会编写Python程序,这些程序在执行之前很难确定它将使用多少内存.因此,我有时会调用一个试图分配大量RAM的Python程序,导致内核大量交换并降低其他正在运行的进程的性能.

因此,我希望限制Python堆可以增加多少内存.达到限制时,程序可能会崩溃.最好的方法是什么?

如果重要,很多代码都是用Cython编写的,所以它应该考虑那里分配的内存.我没有与纯Python解决方案结合(它不需要是可移植的),所以在Linux上运行的任何东西都可以.

python linux memory

47
推荐指数
1
解决办法
4万
查看次数

为什么Python在尝试计算非常大的数字时会"先发制人"地挂起?

关于杀死使用过多内存的进程之前我已经问过这个问题,而且我已经解决了大部分问题.

然而,有一个问题:计算大量数字似乎不受我试图使用的方法的影响.下面的代码旨在为进程设置10秒的CPU时间限制.

import resource
import os
import signal

def timeRanOut(n, stack):
    raise SystemExit('ran out of time!')
signal.signal(signal.SIGXCPU, timeRanOut)

soft,hard = resource.getrlimit(resource.RLIMIT_CPU)
print(soft,hard)
resource.setrlimit(resource.RLIMIT_CPU, (10, 100))

y = 10**(10**10)
Run Code Online (Sandbox Code Playgroud)

希望在运行此脚本(在Unix机器上)时看到的是:

-1 -1
ran out of time!
Run Code Online (Sandbox Code Playgroud)

相反,我没有输出.我获得输出的唯一方法是使用Ctrl+ C,如果我在10秒后Ctrl+ 我得到这个C:

^C-1 -1
ran out of time!
CPU time limit exceeded
Run Code Online (Sandbox Code Playgroud)

如果I Ctrl+ C 10秒之前,那么我必须做两次,并且控制台输出如下所示:

^C-1 -1
^CTraceback (most recent call last):
  File "procLimitTest.py", line 18, in <module> …
Run Code Online (Sandbox Code Playgroud)

python linux

47
推荐指数
2
解决办法
2109
查看次数

自动杀死消耗过多内存或在linux上停顿的进程

我想要一个监视进程的"系统",并在以下情况下杀死所述进程:

  • 该过程超出了一些内存要求
  • 在某段时间内,该过程不响应来自"系统"的消息

我认为这个"系统"可能像监控过程一样简单吗?如何做到这一点的代码示例将是有用的.我当然不反对这个问题的完全不同的解决方案.

linux project-management process

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

linux ×3

python ×2

memory ×1

process ×1

project-management ×1