2013-09-30 18 views
18

Basit bir görevim var: Python'da bir kod parçası yürütmek için gereken süreye ek olarak, belirli bir yığın bellek miktarını ölçmem gerekiyor kod ihtiyacı.IPython ile ölçü (maksimum) bellek kullanımı - timeit ama memit gibi

In [10]: memit 3 + 3 
10000000 loops, best of 3: 303 bytes per loop 

ben bu muhtemelen değil farkındayım: aradığım Ne

In [10]: timeit 3 + 3 
10000000 loops, best of 3: 24 ns per loop 

böyle bir şeydir:

ipython bu gibi çalışır timeit adında güzel bir yararı da vardır IPython ile yerleşik olarak geliyorum - ama ben timeit - memit benzerini beğeniyorum.

+1

Bir göz atacağım, teşekkürler; Çözüm oldukça basit görünüyor. Ve "en iyi" hakkında iyi bir nokta - ama timeit size de en iyisini verir, ve sen gerçekten (bazen) en kötü zamanla ilgilendiğini söyleyebilirsin. Yeniden. IPython büyüsü: http://blog.vene.ro/2012/06/30/quick-memory-usage-benchmarking-in-ipython/ –

+0

'u buldum. Bu sorunun kopyalandığını gösteren soru hafıza ile ilgili Python'daki profilciler genel olarak buradaki IPython'u soruyor; bu yüzden gerçekten nasıl bir kopya olduğunu göremiyorum ... Diğer bir soru ise “timeit”, “memit” ve hatta “ipython” dan bahsetmez. –

cevap

25

Aslında, zaten var, mensur adlı memory_profiler paketin parçası olarak:

In [2]: %memit np.zeros(1e7) 
maximum of 3: 76.402344 MB per loop 

fazla bilgi Düzenleme

https://github.com/fabianp/memory_profiler#ipython-integration at: Bunu kullanmak için, öncelikle ihtiyaç bir ipython olarak yüklemek için uzantısı:

%load_ext memory_profiler 

, ipython hep başlangıçta memory_profiler uzantısını yüklemek yapmak c.InteractiveShellApp.extensions eklemek için profilinize ekleyin ipython_config.py:

$ grep -C2 c.InteractiveShellApp.extensions ~/.ipython/profile_default/ipython_config.py 
# A list of dotted module names of IPython extensions to load. 
# 
c.InteractiveShellApp.extensions = [ 
    'autoreload', 
    'memory_profiler', 
+1

'pip install memory_profiler' yaptıktan sonra, '' [2] 'de:% memit 3' bana 'HATA: Çizgi büyüsü işlevi'% memit' 'bulunamadı' verir. –

+0

belki de cevap yazarı, 'import memory_profiler memo' – erjoalgo

+1

gibi bir şey ifade ediyor. Bir uzantı yüklemek için IPython'a özgü bir komut var. Cevabı ekledim. –