私は、サイズが最大の10個のオブジェクトをメモリに格納したいと考えています。 Rでメモリ内で最大のオブジェクトを見つけるには?
同等機能: Tricks to manage the available memory in an R session
lsos()
# Type Size(MB) Rows Columns
#d2 data.table 157.8364 281444 74
#d data.table 62.2658 816078 11
編集:ここでは9.0 @ は私の試みです。
gc.get_objects()
を使用すると、globals()
を使用する必要があります。私のコンピュータは非常に遅くなります。私は確信していませんglobals()
私は私が欲しいものを与える。私はabc.py
言うには上記の機能を入れて、大v
現れの
import abc
abc.lsos()
# name size
# 8 __builtins__ 6240
# 0 lsos 136
# 6 __file__ 123
# 2 __cached__ 97
# 1 __loader__ 56
# 4 __spec__ 56
# 5 __name__ 54
# 3 __package__ 49
# 7 __doc__ 16
Noneを実行していない How to get the list of all initialized objects and function definitions alive in python?
def lsos(n=10):
import pandas as pd
import sys
all_obj =globals()
object_name = list(all_obj).copy()
object_size = [sys.getsizeof(all_obj[x]) for x in object_name]
d = pd.DataFrame(dict(name = object_name, size = object_size))
d.sort_values(['size'], ascending=[0],inplace=True)
return(d.head(n))
v = list(range(1000))
v2 = list(range(10000))
v3 = list(range(100000))
v4 = v3
lsos()
# name size
# 0 v4 900112
# 22 v3 900112
# 1 v2 90112
# 17 v 9112
# 6 _i 395
# 14 _i1 395
# 19 _oh 288
# 24 Out 288
# 5 _i2 137
# 3 lsos 136
。
編集2: モジュールでglobals()
へのアクセスの問題があるので、私はここで、モジュールにglobals()
を渡す私が今使っているものです:
#abc.py
def lsos(all_obj = globals(),n=10):
import sys
object_name = list(all_obj)
object_size = [ round(sys.getsizeof(all_obj[x])/1024.0/1024.0,4) for x in object_name]
object_id = [id(all_obj[x]) for x in object_name]
d = [(a,b,c) for a,b,c in zip(object_name, object_size, object_id)]
d.sort(key = lambda x:(x[1],x[2]), reverse=True)
dprint = d[0:min(len(d), n)]
#print formating
name_width_max = max([len(x[0]) for x in dprint])
print(("{:<" + str(name_width_max +2) + "}{:11}{}").format("name","size_Mb","id"))
fmt = '{{:<{}}}'.format(name_width_max+2) +" "+ "{: 5.4f}" +" "+ "{:d}"
for line in dprint:
print(fmt.format(*line))
return
そして、それは
で呼び出すことができますimport abc
abc.lsos(globals())
可能性のある重複した[どのように判断しますかPythonのオブジェクトのサイズ?](https://stackoverflow.com/questions/449560/how-do-i-determine-the-size-of-an-object-in-python) –
@ sam-pyt私は思います'sys.getsizeof()'は私をLARにしませんGESTオブジェクト10個。 – user3226167
しかし、これを使って最大10個のオブジェクトを見つけることができます。 –