def map_words(self, start, end):
i, j = <NUM_LIT:8> * start - <NUM_LIT:8>, <NUM_LIT:8> * end<EOL>try:<EOL><INDENT>fileno = self.file.fileno()<EOL><DEDENT>except (AttributeError, io.UnsupportedOperation):<EOL><INDENT>fileno = None<EOL><DEDENT>if fileno is None:<EOL><INDENT>skip = <NUM_LIT:0><EOL>self.file.seek(i)<EOL>m = self.file.read(j - i)<EOL><DEDENT>else:<EOL><INDENT>skip = i % mmap.ALLOCATIONGRANULARITY<EOL>r = mmap.ACCESS_READ<EOL>m = mmap.mmap(fileno, length=j-i+skip, access=r, offset=i-skip)<EOL><DEDENT>if sys.version_info > (<NUM_LIT:3>,):<EOL><INDENT>m = memoryview(m)  <EOL><DEDENT>return m, skip<EOL>
Return a memory-map of the elements `start` through `end`.

        The memory map will offer the 8-byte double-precision floats
        ("elements") in the file from index `start` through to the index
        `end`, inclusive, both counting the first float as element 1.
        Memory maps must begin on a page boundary, so `skip` returns the
        number of extra bytes at the beginning of the return value.