我最近制作了一个脚本来生成随机迷宫,它使用一个自定义的迷宫类,由几个迷宫节点构建而成。每个节点如下所示:class mazeNode:

def __init__(self, pos, conn = None):

self.pos = pos

if conn:

self.conns = [conn]

else:

self.conns = []

conn是另一个mazeNode对象,self.conns在创建迷宫的过程中被更改,以包括节点连接到的每个mazeNode对象。pos是一个具有节点位置的元组。创建迷宫时,会创建mazeNode对象,并根据深度优先搜索算法以分支方式链接在一起。在

这个脚本运行得很好,可以在10秒内创建一个500*500大小的迷宫。然而,它似乎不是很有效的记忆。我已经成功地创建了一个大小为6000*6000的迷宫,但是当我尝试10000*10000时,无论我做什么,我都会得到一个内存错误,即使我分配了50GB的虚拟RAM。对于这个大小,我得到了10^8个mazeNode对象。在

我试着使用shelve模块,但是这太慢了,以至于无法使用,对于更大的迷宫,我得到了一个递归深度错误(可能是因为不必要的递归,脚本很慢)。在

我想知道是否有任何方法可以在保持速度的同时优化脚本的内存使用。所有的节点都链接在一起,但它们不一定都在RAM中。在

编辑

迷宫类如下:

^{pr2}$

编辑2:

我使用了插槽:并编辑了mazeNode类,如下所示:class mazeNode:

__slots__ = ('posx', 'posy', 'conns', )

def __init__(self, pos, conn = None):

self.posx = pos[0]

self.posy = pos[1]

self.conns = [conn] if conn else []

并使用sys.getsizeof()获取类实例的大小。在print(sys.getsizeof(self.maze), sys.getsizeof(self.maze.posx), sys.getsizeof(self.maze.posy), sys.getsizeof(self.maze.conns))

打印64 28 28 96。但是,如果我去掉__slots__,我得到56 28 28 96,这看起来很奇怪。我该怎么解释?__slots__工作不正常吗?在

python 链表操作 优化_链表的内存优化相关推荐

  1. 内存优化 · 基础论 · 初识 Android 内存优化

    [小木箱成长营]内存优化系列文章: 内存优化 · 工具论 · 常见的 Android 内存优化工具和框架 内存优化 · 方法论 · 揭开内存优化神秘面纱 内存优化 · 实战论 · 内存优化实践与应用 ...

  2. python链表怎么定义_链表初介绍以及python实现

    一.链表定义 链表由表头和节点组成,节点分为数据域和指针域,数据域中存贮数据元素,指针域存储下个结点的地址.链表一般分为单链表和双链表. 二.单链表的实现创建节点类Node和链表类Linklist,L ...

  3. python 内存优化_Python 黑魔法之内存优化

    本文字数:2634 字 阅读本文大概需要:7 分钟 写在之前 围绕类的话题,说是说不完的,仅在特殊方法,除了我们在前面遇到过的 __init__(),__new__(),__str__() 等之外还有 ...

  4. louvian算法 缺点 优化_机器学习中的优化算法(1)-优化算法重要性,SGD,Momentum(附Python示例)...

    本系列文章已转至 机器学习的优化器​zhuanlan.zhihu.com 优化算法在机器学习中扮演着至关重要的角色,了解常用的优化算法对于机器学习爱好者和从业者有着重要的意义. 这系列文章先讲述优化算 ...

  5. k8s如何设置虚拟内存_绝地求生内存优化设置教程(建议收藏)

    大家好,我是小宁萌. 可萌,可贱,又可爱. 我们知道吃鸡游戏对内存要求是比较高的,最低都是6GB起步,而如果你的电脑运行内存只有4GB,那么吃鸡会有很有压力,建议最好加一根同规格4GB内存,组建8GB ...

  6. 抖音 Android 性能优化系列:Java 内存优化篇

    内存作为计算机程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿.ANR.黑屏,重则导致用户应用程序发生 OOM(out of memory ...

  7. Android 性能优化----(3)内存优化指南

    前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的内存优化,希望你们会喜欢 目录 1. 定义 优化处理 应用程序的内存使用.空间占用 2. 作用 避免因不正确使用内存 &a ...

  8. Android性能优化(二)—— 内存优化

    在Android系统中,垃圾回收是自动的,比较隐蔽,这就导致一些内存问题表现的并不明显,出现问题后难以定位.常见的内存问题有内存泄漏.内存溢出(Out of Memory).内存抖动等. 我们做内存优 ...

  9. 「性能优化系列」APP内存优化理论与实践

    当一个应用同时运行越来越多的任务以及复杂的业务,Android系统的内存管理机制已经无法满足内存的释放与回收,为了应用的稳定性与性能,去控制内存的创建和回收就成为了一个重要的命题. 本篇文章主要涉及内 ...

  10. 嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究

    [摘要] 嵌入式系统功能的提高,占用了较大内存空间,继而时常出现运行无响应.基于用户方面看,由于系统内存问题影响运行,针对系统内存与进程应用状态研究,可以调整系统数值与执行文件elf分析,进行系统优化 ...

最新文章

  1. [工具推荐]用了TrueCrypt 再无难掩之隐
  2. TLS实现代码段加密
  3. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法
  4. 高等数理统计(part6)--统计决策问题
  5. 你可能会用到的 Mock 小技巧
  6. 11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
  7. Django之ORM字段和参数
  8. 计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令
  9. Mybatis在XML中写SQL比较运算符<=时报错解决方法
  10. 多开分身苹果版_【教程】苹果手机居然可以微信分身?全套教程,进来领取
  11. python 读取geotiff_python gdal 写GeoTiff文件
  12. C语言使用 gzip 算法压缩数据
  13. 2016年排名Top 100的Java类库——在分析了47,251个依赖之后得出的结论(16年文章)...
  14. 为什么顺丰快递就要比别的快递快,别的快递难道做不到吗?
  15. python中turtle画笑脸_怎么用python实现画笑脸
  16. html表格自动分列,html页面中表单怎么用div分列布局
  17. tiktok框架_大动作!海外版抖音TikTok架构将调整,字节跳动开始发力
  18. 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
  19. 5. C精华——字符串
  20. 将双零点双极点调节器简化为普通的PI调节器

热门文章

  1. ajax简单校验用户名是否存在
  2. Telerik RadGridView 右键菜单如何设置?
  3. IssueTrackerCSVS 代码笔记-数据层的反射工厂模式
  4. Django的认证系统(auth)
  5. Extjs GridPanel 监听事件 行选中背景
  6. 页面图片中间有条线----解决
  7. Windows Azure真实案例--Lokad 公司通过软件+服务高效提供先进的预测服务
  8. windows API 菜鸟学习之路(四)
  9. SELECT list is not in GROUP BY clause and contains nonaggregated column---Linux工作笔记049
  10. C++_类和对象_C++运算符重载_关系运算符重载_对== !=重载实现对象的对比_---C++语言工作笔记059