python设置程序最大内存_限制你的Python程序所能使用的最大内存

如果程序开发不当,可能会出现占用过多内存的情况。特别是在Docker里面,如果Python程序占用太多内存,可能会导致Docker容器死掉。

3613c8baf48120b34ba1ef98bd9aef36.png

为了限制Python程序所能使用的最大内存,我们可以使用Python自带的resource模块。

首先获取系统默认的内存soft上限和hard上限:

import resource

soft, hard = resource.getrlimit(resource.RLIMIT_AS)

其中的resource.RLIMIT_AS实际上就是数字5,表示内存资源。而soft限制是一个可以调节的内存使用上限,hard是一个一旦设定就很难动态调整的内存使用量上限。

在我的电脑上运行效果如下图所示:

55a89980268e695fc7e4ea1a687967c3.png

一开始soft和hard的值是一样的。并且它们的单位不是比特。而是比比特还小的单位。我的电脑是8GB内存,而8 * 1024 ^ 6 正好约等于这里的hard和soft的值。

接下来,设置当前运行的这个Python程序能够使用的最大内存:

resource.setrlimit(resource.RLIMIT_AS, (最大上限, hard))

其中最大上限是一个整数。假设我想限制当前程序最多可以使用500MB的内存,那么这里的最大上限可以设置为:

0.5 * 1024 ^ 6 = 576460752303423488

所以设置为:

resource.setrlimit(resource.RLIMIT_AS, (576460752303423488, hard))

那么当前Python程序使用的内存超过500MB以后,程序就会抛出MemoryError。

最后,这些代码只能在Linux系统上正常工作。Windows和Mac上可能会有问题。

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python读取程序内存并查找指定字符,可以使用`ctypes`模块来实现。下面是一个简单的示例代码,演示如何读取程序内存并查找指定字符。 ```python import ctypes # 定义进程ID和要查找的字符 pid = 1234 # 进程ID target_char = 'A' # 要查找的字符 # 打开进程 process = ctypes.windll.kernel32.OpenProcess(0x1F0FFF, False, pid) # 定义内存区域的起始地址和大小 start_address = 0x1000 # 起始地址 buffer_size = 4096 # 缓冲区大小 # 创建一个缓冲区来存储读取的内存数据 buffer = ctypes.create_string_buffer(buffer_size) # 读取内存数据 bytes_read = ctypes.c_ulong(0) # 用于存储实际读取的字节数 ctypes.windll.kernel32.ReadProcessMemory(process, start_address, buffer, buffer_size, ctypes.byref(bytes_read)) # 将缓冲区中的字节数据转换为字符串 data = buffer.raw.decode('utf-8') # 查找指定字符并打印地址 for i, char in enumerate(data): if char == target_char: address = start_address + i print(f"Found '{target_char}' at address: {hex(address)}") # 关闭进程句柄 ctypes.windll.kernel32.CloseHandle(process) ``` 请注意,这个示例代码是在Windows平台上使用`ctypes`模块进行程序内存读取和查找的。在不同的操作系统上,可能需要使用不同的模块或方法来实现相同的功能。此外,读取程序内存数据可能涉及到一些安全和权限方面的限制,请确保你有合法的权限来进行这样的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值