限制线程python的最大内存分配

有没有一种干净的跨平台(unix和Windows)方法来限制python中任务的内存利用率?如果有时间限制,您只需

timeout = 5
x = CustomThread() # performs the task
x.start()
x.join(timeout)

但据我所知,似乎在内存使用方面并没有什么等同的。有一个合理的假设,即任务不会创建任何自己的线程或进程(如果这样做会更容易)。

评论
在景龙
在景龙

您可以使用资源库来限制    进程可能占用的地址空间的最大区域(以字节为单位)。

像这样

import resource  # This lib should work on WINDOWS and UNIX as well.

def mem_limit(maximum_size: int): 
    soft, hard = resource.getrlimit(resource.RLIMIT_AS) 
    resource.setrlimit(resource.RLIMIT_AS, (maximum_size, hard))

maximum_size:应该是您希望进程使用的最大字节数

另外,请注意,我们更改了“软”限制,该限制是操作系统将通过信号通知进程或通常对其进行限制的极限值。 另一方面,“硬性”限制是“软性”限制的上限, 这实质上意味着它应始终大于“软”限制。

You can read more here.

点赞
评论