检查或删除正在消耗内存的变量
在Jupyter(IPython)上执行数据分析时,数据越来越多地存储在内存中,因此您要检查消耗内存的变量。
在这种情况下,如果执行以下命令,则变量和变量的存储容量将显示在列表中。
Python2
1 2 3 4 5 6 7 | import sys print "{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|') print " ------------------------------------ " for var_name in dir(): if not var_name.startswith("_"): print "{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|') |
Python3
1 2 3 4 5 6 7 | import sys print("{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|')) print(" ------------------------------------ ") for var_name in dir(): if not var_name.startswith("_"): print("{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|')) |
输出结果如下所示。
但是,此命令将输出在Jupyter上定义的所有变量的结果,因此,例如,如果您只想提取内存容量超过某个值的变量,则按以下Arrange as。
Python2
1 2 3 4 5 6 7 | import sys print "{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|') print " ------------------------------------ " for var_name in dir(): if not var_name.startswith("_") and sys.getsizeof(eval(var_name)) > 10000: #ここだけアレンジ print "{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|') |
Python3
1 2 3 4 5 6 7 | import sys print("{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|')) print(" ------------------------------------ ") for var_name in dir(): if not var_name.startswith("_") and sys.getsizeof(eval(var_name)) > 10000: #ここだけアレンジ print("{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|')) |
然后
如您所见,只能提取具有大存储容量的变量。
完成此操作后,
1 | del U_Global, V_Global |
您可以指定不必要的变量,例如
并将其删除。
您可以释放内存并在Jupyter(IPython)上轻松地继续分析。
备注
标题说"在Jupyter(IPython)上",但是我认为它可能会以相同的方式显示在其他界面上。
但是,由于它使用str.format(),因此必须为Python 2.6或更高版本才能正确输出。
参考网址
- http://docs.python.jp/2/library/sys.html
- http://qiita.com/Kodaira_/items/30c84806b61792b613f2
- http://stackoverflow.com/questions/33978/find-out-how-much-memory-is-being-used-by-an-object-in-python
- http://stackoverflow.com/questions/633127/viewing-all-defined-variables
- http://stackoverflow.com/questions/9989334/create-nice-column-output-in-python