Python içinde bir nesne tarafından kullanılmakta olan ne kadar bellek öğrenin

oy
149

Nasıl bir nesne tarafından kullanılmakta olan ne kadar bellek bulmaya hakkında gitmek? Ben ancak ben istediğim şey (zaman onun ömrü boyunca) bir örneklenmiş nesne tarafından, kod bloğu tarafından ne kadar kullanıldığının öğrenmek için mümkün olduğunu biliyoruz.

Oluştur 29/08/2008 saat 03:59
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
4

Ben Aşağıdakilerden herhangi biri ile herhangi bir kişisel deneyime sahip, ancak bir "Python [bellek] profilci" verim için basit bir arama:

  • PySizer, "Python için bir hafıza profilci" adresinden http://pysizer.8325.org/ . Ancak sayfa proje bir süre güncellenmemiş belirtmek görünüyor ve atıfta ...

  • Bulunan Heapy, "Python programlarında bellek ile ilgili konularda ilişkin deste [ing] ayıklama ve optimizasyonu" http://guppy-pe.sourceforge.net/#Heapy .

Umarım yardımcı olur.

Cevap 29/08/2008 saat 04:33
kaynak kullanıcı

oy
85

Bir piton nesnenin bellek boyutunu bulmak için kolay bir yolu yoktur . Listeleri ve dicts gibi - - diğer piton nesnelerine başvuruları olabilir bulabileceğiniz sorunlardan biri Python nesneleri olmasıdır (bu durumda, sizin boyut ne olurdu her bir nesne ya da değil boyutunu içeren boyutu??). Türleri ve çöp toplama nesne ile ilgili bazı havai işaretçileri ve iç yapıları vardır. Son olarak, bazı piton nesneler olmayan bariz davranışlara sahip. Örneğin, daha nesneler için rezerv alan listeler sahip oldukları daha çoğu zaman; dicts bile farklı şekillerde çalışabilir beri daha karmaşık (bunlar tuşların az sayıda farklı uygulama var ve bazen üzerinde girdileri tahsis).

Bir yoktur kodunun büyük yığın (ve bir kodun güncellenmiş büyük yığın ) orada en iyi şekilde bellekte bir piton nesnenin boyutunu tahmin etmeye çalışmak.

Ayrıca bazı kontrol etmek isteyebilirsiniz PyObject hakkındaki eski tanım (hemen hemen tüm piton nesneleri temsil iç C struct).

Cevap 30/08/2008 saat 02:25
kaynak kullanıcı

oy
25

Diğer bir yaklaşım turşu kullanmaktır. Bkz bu cevabı bu soruya bir kopyası için.

Cevap 16/10/2012 saat 21:25
kaynak kullanıcı

oy
67

Bunu dene:

sys.getsizeof(object)

getsizeof () nesnenin çağrıları __sizeof__yöntem ve ek bir çöp toplayıcı yükü ekler halinde nesne çöp toplayıcı tarafından yönetilmektedir.

Bir yinelemeli tarifi

Cevap 08/11/2013 saat 16:11
kaynak kullanıcı

oy
2

nesneler üzerinde geçersiz kılma __sizeof__ yanıltıcı olabilir, çünkü bu dikkatle kullanılmalıdır.

bregman.suite kullanarak, nesnenin kendisine (MFCC) daha büyük olan bir nesne örneği sys.getsizeof çıkışı bir dizi nesnenin bir kopyasını (veri), bazı testler.

>>> mfcc = MelFrequencyCepstrum(filepath, params)
>>> data = mfcc.X[:]
>>> sys.getsizeof(mfcc)
64
>>> sys.getsizeof(mfcc.X)
>>>80
>>> sys.getsizeof(data)
80
>>> mfcc
<bregman.features.MelFrequencyCepstrum object at 0x104ad3e90>
Cevap 03/01/2014 saat 12:54
kaynak kullanıcı

oy
-2

Büyük nesneler için, biraz ham ama etkili bir yöntem kullanabilirsiniz: Python işlem sisteminde kaplar ne kadar bellek işaretleyin, ardından nesneyi silin ve karşılaştırın.

Bu yöntem birçok sakıncaları vardır ama size çok büyük nesneler için çok hızlı bir tahmin verecektir.

Cevap 30/06/2014 saat 15:44
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more