鱼C论坛

 找回密码
 立即注册
查看: 2472|回复: 5

[技术交流] 一个不是作品的作品

[复制链接]
发表于 2022-7-15 15:42:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看小甲鱼老师教程的时候注意到了有id()这个大小,id代表着内存地址。
我想起了有一款app,就是通过挤满内存的方式,来测内存的。
我照着上面的思路写出了,下面的代码。
  1. import sys
  2. import random as r
  3. zz = sys.maxsize
  4. sys.setrecursionlimit(2099999999)
  5. zz = zz*zz

  6. var = 1
  7. c = [1]
  8. def ff():
  9.     while True:
  10.         try:
  11.             while var == 1:
  12.                 for a in c:
  13.                     print(id(a))
  14.                     c.append(r.randint(-99223372036854775807,zz))

  15.         except:
  16.             ff()



  17. ff()

  18.         
复制代码

最后一个输出如下
  1. 140327462591008
复制代码

按照理论来说可以通过这串数字可以大概得出内存大小,因为本人能力,原因,无法得出结论,如果有鱼油有相关知识可以与我一起交流。
最后还报错了,看看有没有有鱼油可以帮我解决这个问题
  1. run: line 1:     3 Killed                  /usr/local/python-3.8.1/bin/python3 script.py

  2. Exited with error status 137
复制代码

PS:本人发现因为有random函数的原因最后输出值不一定,如果有鱼油有解决的办法可以告诉我,让我解决这个问题。@python爱好者.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-15 18:44:06 | 显示全部楼层
  1. import sys
  2. import random as r

  3. num = sys.maxsize #获取变量列表等容器的 最大储存空间(元素个数)

  4. c = [i for i in range(num)] #创建一个 '不重复' 且为 '列表元素最大限制内尽可能多' 的列表
  5. print(id(c[-1])) #打印最后一个元素的内存地址

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-15 18:47:59 | 显示全部楼层

我猜你的意思是:
再创建一个 Python 最大限制且不重复的列表后,再通过列表最后一个元素的内存地址算出电脑内存....

但我觉得:
这样算出来的结果只是 Python 中一个列表最大占用的内存.......吧......
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-15 18:50:46 | 显示全部楼层
python爱好者. 发表于 2022-7-15 18:47
我猜你的意思是:

但我觉得:


所以说应该不能用占 "列表等容器" 来计算电脑内存......吧....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-16 06:13:19 From FishC Mobile | 显示全部楼层
应用程序有自己的内存空间,你的代码用来测试整个电脑的内存,显然是不现实的

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-16 08:56:45 From FishC Mobile | 显示全部楼层
python爱好者. 发表于 2022-7-15 18:50
所以说应该不能用占 "列表等容器" 来计算电脑内存......吧....

这个问题几乎无解,如果占满了一个容器重开一个容器的话就原来的那个容器就会被释放。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-28 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表