के प्रदर्शन को समझना मैं बेहतर समझने की कोशिश कर रहा हूं कि कैसे numpy के memmap बहुत बड़ी फ़ाइलों के विचारों को संभालता है। स्क्रिप्ट नीचे खुलता है एक स्मृति मैप किए गए 2048^3 सरणी, और प्रतियांnumpy memmap
import numpy as np
from time import time
FILE = '/Volumes/BlackBox/test.dat'
array = np.memmap(FILE, mode='r', shape=(2048,2048,2048), dtype=np.float64)
t = time()
for i in range(5):
view = np.array(array[::16, ::16, ::16])
t = ((time() - t)/5) * 1000
print "Time (ms): %i" % t
आमतौर पर, यह प्रिंट Time (ms): 80
या तो इसके बारे में एक downsampled 128^3 दृश्य।
Time (ms): 9988
Time (ms): 79
Time (ms): 78
किसी को समझ में है कि क्यों पहले मंगलाचरण तो बहुत धीमी है: हालांकि, अगर मैं
view = np.array(array[1::16, 2::16, 3::16])
और इसे चलाने के लिए दृश्य काम तीन बार बदलने के लिए, मैं निम्नलिखित मिल सकता है?
ध्यान दें कि एक शिफ्ट सबसे अधिक गतिशील आयाम में से 1 का परिणाम 32 एमबी की शिफ्ट होगी, जो पर्याप्त होगा कि आपके पढ़ने पृष्ठ के एक अलग सेट से आते हैं। – ecatmur
स्पष्टीकरण के लिए धन्यवाद - मुझे एहसास नहीं हुआ कि ओएस इस तरह के परिणाम कैश कर सकता है – ChrisB