2024-05-28 23:21:18 发布
网友
我用np.zeros((1000,1000))创建了一个大的多维数组M。经过一定数量的手术,我不再需要它了。如何在程序执行期间动态释放RAM?是不是M=0为我做的?
np.zeros((1000,1000))
M
M=0
使用del语句:
del M
顺便说一下,一个float64形状数组(1000, 1000)只需要7 Mb。如果你有记忆问题,很可能问题出在别处。
float64
(1000, 1000)
有两种方式。。。。。。。
1)。德尔姆
But it will delete the array object it self.
(第二章)。M、 清除()
you can clear the array without deleting M object
在general中,您不能这样做,即使您删除了对某个对象的所有引用,也要留给python实现来重用或释放内存。在CPython上,可以调用^{}来强制运行垃圾回收。但是,虽然这可能会回收内存,但并不一定会将其返回到操作系统。
但是:numpy是一个扩展模块,它执行自己的任务,并管理自己的内存。
当我监视一个python进程的内存使用情况时,我看到在del(M)之后RAM的使用量(常驻集大小)下降了
del(M)
In [1]: import numpy as np In [2]: M = np.zeros((1000,1000)) In [3]: del(M) In [4]:
刚开始IPython:
slackbox:~> ps -u 77778 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND rsmith 77778 0.0 0.5 119644 22692 0 S+ 2:37PM 0:00.39 /usr/local/bin/py
导入numpy(1)之后:
slackbox:~> ps -u 77778 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND rsmith 77778 1.0 0.8 168548 32420 0 S+ 2:37PM 0:00.49 /usr/local/bin/py
创建数组(2)后:
slackbox:~> ps -u 77778 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND rsmith 77778 0.0 1.0 176740 40328 0 S+ 2:37PM 0:00.50 /usr/local/bin/py
在调用del(3)之后:
del
slackbox:~> ps -u 77778 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND rsmith 77778 0.0 0.8 168548 32496 0 S+ 2:37PM 0:00.50 /usr/local/bin/py slackbox:~>
因此,在这种情况下,使用del()可以减少RAM的使用量。
del()
注意,numpy有一个例外。Numpy可以使用另一个扩展库分配的内存。在这种情况下,numpy对象被标记为numpy不拥有内存,释放内存留给另一个库。
使用del语句:
顺便说一下,一个
float64
形状数组(1000, 1000)
只需要7 Mb。如果你有记忆问题,很可能问题出在别处。有两种方式。。。。。。。
1)。德尔姆
(第二章)。M、 清除()
在general中,您不能这样做,即使您删除了对某个对象的所有引用,也要留给python实现来重用或释放内存。在CPython上,可以调用^{} 来强制运行垃圾回收。但是,虽然这可能会回收内存,但并不一定会将其返回到操作系统。
但是:numpy是一个扩展模块,它执行自己的任务,并管理自己的内存。
当我监视一个python进程的内存使用情况时,我看到在
del(M)
之后RAM的使用量(常驻集大小)下降了刚开始IPython:
导入numpy(1)之后:
创建数组(2)后:
在调用
del
(3)之后:因此,在这种情况下,使用
del()
可以减少RAM的使用量。注意,numpy有一个例外。Numpy可以使用另一个扩展库分配的内存。在这种情况下,numpy对象被标记为numpy不拥有内存,释放内存留给另一个库。
相关问题 更多 >
编程相关推荐