相关疑难解决方法(0)

如何限制单元测试的最长运行时间?

我目前正在运行一些单元测试,可能需要很长时间才能失败或无限期运行.在成功的测试运行中,它们将始终在一定的时间内完成.

是否有可能创建一个pytest单元测试,如果它在一定时间内没有完成就会失败?

python pytest

30
推荐指数
1
解决办法
9959
查看次数

如何使用`setr​​limit`来限制内存使用?RLIMIT_AS过早死亡; RLIMIT_DATA,RLIMIT_RSS,RLIMIT_STACK完全没有杀死

我试图setrlimit限制我在Linux系统上的内存使用,以阻止我的进程崩溃机器(我的代码崩溃了高性能集群上的节点,因为一个错误导致内存消耗超过100 GiB ).我似乎无法找到传递给他的正确资源setrlimit; 我认为它应该是常驻的,不能用setrlimit限制,但我对常驻,堆,堆栈感到困惑.在下面的代码中; 如果我只取消注释RLIMIT_AS,代码将失败MemoryError,numpy.ones(shape=(1000, 1000, 10), dtype="f8")即使该数组应该只有80 MB.如果我只取消注释RLIMIT_DATA,RLIMIT_RSSRLIMIT_STACK两个阵列获得成功分配,即使总内存使用量为2 GB,或两次所需的最大.

我想让我的程序一旦尝试分配太多RAM就失败(无论如何).为什么所有的RLIMIT_DATA,RLIMIT_RSS,RLIMIT_STACKRLIMIT_AS做什么,我的意思是,什么是正确的资源传递给setrlimit

$ cat mwe.py 
#!/usr/bin/env python3.5

import resource
import numpy

#rsrc = resource.RLIMIT_AS
#rsrc = resource.RLIMIT_DATA
#rsrc = resource.RLIMIT_RSS
#rsrc = resource.RLIMIT_STACK

soft, hard = resource.getrlimit(rsrc)
print("Limit starts as:", soft, hard)

resource.setrlimit(rsrc, (1e9, 1e9))

soft, hard = resource.getrlimit(rsrc)
print("Limit is now:", soft, …
Run Code Online (Sandbox Code Playgroud)

python memory numpy setrlimit

8
推荐指数
1
解决办法
3795
查看次数

标签 统计

python ×2

memory ×1

numpy ×1

pytest ×1

setrlimit ×1