Python简易内存池

liftword1个月前 (03-20)技术文章17
class MemoryPool:
    def __init__(self, total_size=100):
        self.total_size = total_size
        self.memory = [None] * total_size  # 用列表模拟内存池
        self.allocated = {}  # 记录已分配的内存块 {起始地址: 大小}

    def request(self, size):
        if size <= 0 or size> self.total_size:
            return "error"
        
        # 寻找连续空闲内存
        start = 0
        while start < self.total_size:
            if self.memory[start] is None:
                end = start
                while end < self.total_size and self.memory[end] is None:
                    if end - start + 1 == size:
                        # 分配内存
                        for i in range(start, end + 1):
                            self.memory[i] = "allocated"
                        self.allocated[start] = size
                        return start
                    end += 1
                start = end + 1
            else:
                start += 1
        return "error"

    def release(self, address):
        if address not in self.allocated:
            return "error"
        
        # 释放内存
        size = self.allocated[address]
        for i in range(address, address + size):
            self.memory[i] = None
        del self.allocated[address]
        return None

# 处理输入
def process_commands(commands):
    memory_pool = MemoryPool()
    for cmd in commands:
        if cmd.startswith("REQUEST="):
            size = int(cmd.split("=")[1])
            result = memory_pool.request(size)
            if result is not None:
                print(result)
        elif cmd.startswith("RELEASE="):
            address = int(cmd.split("=")[1])
            result = memory_pool.release(address)
            if result == "error":
                print("error")
        else:
            print("error")

# 输入处理
N = int(input("请输入操作命令的个数: "))
commands = [input(f"请输入第 {i + 1} 个操作命令: ") for i in range(N)]

# 执行命令
process_commands(commands)


相关文章

分享一个文件整理使用Python小脚本(删除相同文件减小内存占用)

写在前面:脚本作用:在目标文件夹中筛选出大小相同的文件,并打印在屏幕上,这样可以快速找出相同文件,释放硬盘内存。前期部署:安装python并做好配置环境变量(基础)先上代码:import osfrom...

python如何进行内存管理

关于首先python进行内存管理就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。当一个变量的引用计数为0的时候,就会被解释器回收。当然在交互...

一文读懂 Python 的内存管理

Python 是一种高级编程语言,以其简单性和可读性而闻名。它的主要功能之一是自动内存管理,这对开发人员来说至关重要,因为它抽象了手动内存分配和释放的复杂性。本文旨在深入了解 Python 的内存管...

一文掌握Python内存管理

Python中的内存是由Python内存管理器(Python memory manager)来管理的,它涉及到一个包含所有Python对象和数据结构的私有堆(heap)。Python内存管理器有不同的...

Python 的内存管理与垃圾回收

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者| 慕课网精英讲师 朱广蔚1. 内存管理概述1.1 手动内存管理在计算机发展的早期,编程语言提供了手动内存管理的机制,例如...

喂!你这个python的内存是不是爆了?喏,拿这个去测试一下看看

你是否曾经为python程序的内存占用问题头疼不已?是否觉得内存泄漏、对象占用过多内存等问题难以排查?别急,今天我要介绍一个神器——pympler,让你轻松搞定python内存分析!01什么是pymp...