2013-09-30 5 views
18

मेमिट करें मेरे पास एक साधारण कार्य है: पाइथन में कोड के एक हिस्से को निष्पादित करने में लगने वाले समय को मापने के अलावा, मुझे किसी दिए गए हिस्से की स्मृति को मापने की आवश्यकता है कोड की जरूरत है।IPython-like timeit के साथ मेमोरी (अधिकतम) मेमोरी उपयोग को मापें लेकिन

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

मुझे पता है कि यह शायद नहीं है कर रहा हूँ:

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

मैं क्या देख रहा हूँ कुछ इस तरह है:

IPython timeit कहा जाता है एक अच्छा उपयोगिता जो इस तरह काम करता है आईपीथॉन के साथ निर्मित आओ- लेकिन मुझे timeit - memit समानता पसंद है।

+1

मैं एक नज़र डालेगा, धन्यवाद; समाधान काफी सरल दिखता है। और "सर्वश्रेष्ठ" के बारे में अच्छी बात - लेकिन समय सीमा आपको भी सर्वश्रेष्ठ प्रदान करती है, और आप कह सकते हैं कि आप वास्तव में (कभी-कभी) सबसे बुरे समय में रूचि रखते हैं। पुन। आईपीथन जादू: मैंने पाया है http://blog.vene.ro/2012/06/30/quick-memory-usage-benchmarking-in-ipython/ –

+0

सवाल यह है कि इस प्रश्न को डुप्लिकेट के रूप में चिह्नित किया गया है स्मृति के बारे में है सामान्य रूप से पाइथन में प्रोफाइलर- यह यहां आईपीथन के बारे में पूछता है; तो मुझे नहीं लगता कि यह वास्तव में एक डुप्लिकेट कैसे है ... दूसरे प्रश्न में 'टाइमिट', 'मेमिट' या यहां तक ​​कि "आईपीथॉन" का कोई उल्लेख नहीं है। –

उत्तर

25

वास्तव में, यह पहले से मौजूद है, नीरसता से नामित memory_profiler पैकेज के भाग के रूप में:

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

अधिक जानकारी पर https://github.com/fabianp/memory_profiler#ipython-integration

संपादित करें: इस का उपयोग करने के लिए, आप इसे एक IPython के रूप में लोड करने की आवश्यकता है विस्तार:

%load_ext memory_profiler 

बनाने के IPython हमेशा स्टार्टअप पर memory_profiler एक्सटेंशन लोड, c.InteractiveShellApp.extensions में जोड़ने अपनी प्रोफाइल की सूची 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

ने 'पाइप इंस्टॉल मेमोरी_प्रोफाइलर' किया है, '[2]:% memit 3' मुझे' त्रुटि देता है: रेखा जादू कार्य '% memit' नहीं मिला'। –

+0

शायद उत्तर के लेखक का अर्थ 'मेमोरी के रूप में आयात स्मृति_प्रोफाइलर' जैसे कुछ होना चाहिए – erjoalgo

+1

एक्सटेंशन लोड करने के लिए एक आईपीथन विशिष्ट आदेश है। मैंने इसे उत्तर में जोड़ा है। –

संबंधित मुद्दे