我现在要用串行的方法实现一个生命游戏,这个生命游戏是在一个100000 x 100000的棋盘上,并且繁衍500代。我选择用list形成一个二维数组来装这个棋盘上的数据,可是程序运行到一半,报错说memory error,如果数据量小一点的话运行时没问题的。请问我应该怎么改进呢

# 棋盘的行列数

row = 100000

column = 100000

# 进化代数

count = 50

nCellSta = [[random.randint(0, 1) for i in range(column)] for j in range(row)]

nTempSta = [[0 for p in range(column)] for q in range(row)]

def CellCount(nRow, nColumn):

global row, column, nCellSta

nSum = 0

for i in range(nRow - 1, nRow + 2):

for j in range(nColumn - 1, nColumn + 2):

if i < 0 or i > row - 1 or j < 0 or j > column - 1 or i == nRow and j == nColumn:

continue

if nCellSta[i][j] == 1:

nSum += 1

if nSum == 0 or nSum == 1 or nSum == 4 or nSum == 5 or nSum == 6 or nSum == 7 or nSum == 8:

return 0

elif nSum == 2:

return nCellSta[nRow][nColumn]

elif nSum == 3:

return 1

# 输出列表nCellSta的值

def printValue():

nSum = 0

global row, column

for i in range(row):

for j in range(column):

# 打印效果

# print(nCellSta[i][j], ' ', end='')

nSum += nCellSta[i][j]

# print('\n')

return nSum

def main():

global count, nCellSta, nTempSta

printValue()

startTime = time.perf_counter()

for k in range(count - 1):

# print('新一轮游戏:\n')

for i in range(row):

for j in range(column):

nTempSta[i][j] = CellCount(i, j)

nCellSta = copy.deepcopy(nTempSta)

if not printValue():

print('全部死亡,进化结束')

break

endTime = time.perf_counter()

seconds = endTime - startTime

m, s = divmod(seconds, 60)

h, m = divmod(m, 60)

print('花费时间为:%d:%02d:%.3f' % (h, m, s))

python做的大型游戏_Python实现数据量较大的生命游戏相关推荐

  1. python not defined怎么解决_数据量太大?散点图装不下怎么办?用Python解决数据密度过大难题

    当我们需要观察比较2个变量间的关系时,散点图是我们首选图表. 可当数据量非常大,数据点又比较集中在某个区间中,图表没法看,密密麻麻的怎么看? 怎么办?这时候就得看密度图了 什么是密度图? 所谓的密度图 ...

  2. 第9条:用生成器表达式来改写数据量较大的列表推导式

    核心知识点: (1)当输入的数据量较大时,列表推导可能会因为占用太多内存而出问题. (2)由生成器表达式所返回的迭代器,可以逐次产生输出值,从而避免内存用量问题. (3)把某个生成器表达式所返回的迭代 ...

  3. for循环数据量太大_中文文本分类roberta大力出奇迹之数据量大的问题

    问题描述: 笔者在文本分类场景中使用了roberta+pool+dense的三分类模型.采用预训练模型做项目的时候经常苦于数据太少,模型泛化性差,因此收集了1300W数据.在我尝试暴力出奇迹的时候,遇 ...

  4. ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | advanced-java 来源 | http ...

  5. bootstrap 树形表格渲染慢_bootstrap-table-treegrid数据量较大时渲染太久了

    bootstrap-table-treegrid数据量较大时渲染太久了 森姐姐 2019-10-23 16:48:51 2260 收藏 2 分类专栏: 遇到的问题 最后发布:2019-10-23 16 ...

  6. es 查询语法_ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?

    点击上方☝SpringForAll社区 轻松关注! 及时获取有趣有料的技术文章 本文来源:http://8rr.co/GFLb 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 e ...

  7. ElasticSearch面试 - es 在数据量很大的情况下如何提高查询效率啊?

    面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的.很多时 ...

  8. ES 在数据量很大的情况下如何提高查询效率

    如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数 ...

  9. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

最新文章

  1. ShaderLab Syntax 基本语法
  2. Mac OS X上的Java安装位置在哪里?
  3. poj 2777(线段树+区间染色)
  4. 杠上了,Linus 再次怒喷 Intel 直言“去死”
  5. python gamma函数_python gamma矫正
  6. java limit_Java 8 Stream:limit()和skip()之间的区别
  7. SHELL脚本也要函数化
  8. cam350菜单怎么切换成中文_CAM350菜单中文详解
  9. android read_phone_state 代码,android - 用户10102和当前进程都没有android.permission.READ_PHONE_STATE - 堆栈内存溢出...
  10. 微信扫描下载apk解决方案
  11. win10触屏输入法_Win10触摸键盘怎么使用手写板功能输入?
  12. moment的常见用法总结
  13. 1.1 命题逻辑 笔记
  14. Mac | 替换系统自带的壁纸
  15. 直流无刷电机的好处与坏处
  16. sonarqube官方文档翻译之UserGuide
  17. 有一个班4个学生,5门课程。
  18. Java教程之多级缓存
  19. vue和js中如何实现模糊查询
  20. python static方法_浅谈python 类方法/静态方法

热门文章

  1. linux权限管理之用户和组管理
  2. python爬虫之路--准备环境
  3. 傅立叶变换、拉普拉斯变换、Z变换的联系?为什么要进行这些变换。研究的都是什么?
  4. .net中所用到的编码名称和对应的代码页(Encoding.GetEncoding) .
  5. 漫步微积分一 —— 引言
  6. 数据预处理之归一化/标准化/正则化/零均值化
  7. [深度学习-总结]Deep learning中8大模型介绍与比较(LeNet5,AlexNet,VGG,Inception,MobileNets,ResNet,DenseNet,Senet)
  8. [深度学习-实践]Tensorflow 2.x应用ResNet SeNet网络训练cifar10数据集的模型在测试集上准确率 86%-87%,含完整代码
  9. 隐马尔可夫模型的三个基本问题
  10. Java 8实现BASE64编解码