有没有办法从Python
更改正在运行的流程可用的资源?即我想更改Max open files
soft
:hard
限制。
我知道我可以使用ulimit -n 1024000
并从该shell生成进程,但这需要事先停止该进程。
我也知道prlimit
,但Wheezy 7.6
util-linux 2.20.1-5.3
无效。
Python resource
模块显然允许仅为自己更改限制...
我找到了以下blog article,其中解释了如何使用gdb
来解决这个问题,而我只是希望在Python
中存在类似内容。
基本上我认为我正在询问如何从Python程序中为正在运行的进程进行setrlimit
系统调用。
答案 0 :(得分:1)
再看一下resource
库。函数resource.prlimit()
将pid
作为其第一个参数,如果找不到该ID的进程,则会引发ProcessLookupError
。所以我相信这正是你所寻找的。 p>
resource.prlimit(pid, resource[, limits])
在一个函数中组合setrlimit()和getrlimit(),并支持获取和设置任意进程的资源限制。如果pid为0,则该调用适用于当前进程。 [...]
如果未给出
limits
,则该函数返回进程pid的资源限制。当给出limits
时,将设置进程的资源限制并返回前一个资源限制。
问题是Python 2.7中没有此功能。希望你可以在python 3中完成这项任务。