Rol*_*ith 16
在一般你不能.即使你删除了对象的所有引用,它仍然留给python实现来重用或释放内存.在CPython上,您可以调用gc.collect()
强制执行垃圾收集.但是虽然这可能会回收内存,但它并不一定会将其返回给操作系统.
但是:numpy是一个扩展模块,可以完成自己的工作,并管理自己的内存.
当我监视python进程的内存使用情况时,我看到RAM使用率(Resident Set Size)之后会下降 del(M)
In [1]: import numpy as np
In [2]: M = np.zeros((1000,1000))
In [3]: del(M)
In [4]:
Run Code Online (Sandbox Code Playgroud)
刚刚启动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
Run Code Online (Sandbox Code Playgroud)
导入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
Run Code Online (Sandbox Code Playgroud)
创建数组后(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
Run Code Online (Sandbox Code Playgroud)
致电del
(3)后:
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:~>
Run Code Online (Sandbox Code Playgroud)
因此在这种情况下使用del()
可以减少使用的RAM量.
请注意,numpy有一个例外.Numpy可以使用另一个扩展库分配的内存.在这种情况下,numpy对象被标记为numpy不拥有内存,释放它将留给另一个库.
归档时间: |
|
查看次数: |
7560 次 |
最近记录: |