Apakah ada referensi untuk ukuran memori dari struktur data Python pada platform 32- dan 64-bit?
Jika tidak, alangkah baiknya untuk memilikinya di SO. Lebih lengkap lebih baik! Jadi berapa banyak byte yang digunakan oleh struktur Python berikut (tergantung pada len
dan jenis konten jika relevan)?
int
float
- referensi
str
- string unicode
tuple
list
dict
set
array.array
numpy.array
deque
- objek kelas gaya baru
- objek kelas gaya lama
- ... dan semua yang saya lupakan!
(Untuk wadah yang hanya menyimpan referensi ke objek lain, kami jelas tidak ingin menghitung ukuran item itu sendiri, karena mungkin dibagikan.)
Selanjutnya, adakah cara untuk mendapatkan memori yang digunakan oleh suatu objek pada saat runtime (secara rekursif atau tidak)?
python
memory
memory-footprint
LeMiz
sumber
sumber
a
, gunakana.nbytes
.Jawaban:
Rekomendasi dari pertanyaan sebelumnya tentang ini adalah menggunakan sys.getsizeof () , mengutip:
Anda bisa mengambil pendekatan ini:
2012-09-30
python 2.7 (linux, 32-bit):
python 3.3 (linux, 32-bit)
01-08-2016
OSX, Python 2.7.10 (default, 23 Okt 2015, 19:19:21) [GCC 4.2.1 Kompatibel dengan Apple LLVM 7.0.0 (clang-700.0.59.5)] di darwin
sumber
0
,0.0
,''
danu''
untuk konsistensi?Saya dengan senang hati menggunakan pympler untuk tugas-tugas semacam itu. Ini kompatibel dengan banyak versi Python -
asizeof
modul khususnya kembali ke 2.2!Misalnya, menggunakan contoh hughdbrown tetapi dengan
from pympler import asizeof
di awal danprint asizeof.asizeof(v)
di akhir, saya melihat (sistem Python 2.5 di MacOSX 10.5):Jelas ada beberapa perkiraan di sini, tetapi saya merasa sangat berguna untuk analisis dan penyetelan footprint.
sumber
>>> getsizeof('a')
memberi25
dan>>> getsizeof('ab')
memberi26
`Semua jawaban ini mengumpulkan informasi berukuran dangkal. Saya menduga bahwa pengunjung pertanyaan ini akan berakhir di sini untuk menjawab pertanyaan, "Seberapa besar benda kompleks ini dalam ingatan?"
Ada jawaban bagus disini: https://goshippo.com/blog/measure-real-size-any-python-object/
Bagian lucunya:
Digunakan seperti ini:
Jika Anda ingin mengetahui model memori Python lebih dalam, ada artikel bagus di sini yang memiliki potongan kode "ukuran total" yang serupa sebagai bagian dari penjelasan yang lebih panjang: https://code.tutsplus.com/tutorials/understand-how- banyak-memori-Anda-python-objek-gunakan - cms-25609
sumber
96
penunjuk ke objek cython dalam memoriCoba profiler memori. profiler memori
sumber
Anda juga dapat menggunakan modul guppy .
Dan:
sumber
Anda juga dapat menggunakan
tracemalloc
modul dari pustaka standar Python. Tampaknya berfungsi dengan baik untuk objek yang kelasnya diimplementasikan dalam C (tidak seperti Pympler, misalnya).sumber
Saat Anda menggunakan fungsi
dir([object])
built-in, Anda bisa mendapatkan__sizeof__
fungsi built-in.sumber