class simple_allocator(object): def __init__(self): self.lock = threading.Lock() self.size = mmap.PAGESIZE self.offset = 0 self.buf = SharedMemoryBuffer(self.size) def _allocate_tiny(self, size): free = self.size - self.offset if (size > free): self.size += mmap.PAGESIZE if (self.size > 1024**2): self.size = 1024**2 self.buf = SharedMemoryBuffer(self.size) self.offset = size addr, _ = self.buf.getbuffer() return 0, self.buf else: offset = self.offset self.offset += size addr, _ = self.buf.getbuffer() return offset, self.buf def _allocate_big(self, size): buf = SharedMemoryBuffer(size) addr, _ = buf.getbuffer() return 0, buf def allocate(self, size): with self.lock: if size > mmap.PAGESIZE: offset, buf = self._allocate_big(size) else: offset, buf = self._allocate_tiny(size) return offset, buf
def _allocate_tiny(self, size): free = self.size - self.offset if (size > free): self.size += mmap.PAGESIZE if (self.size > 1024**2): self.size = 1024**2 self.buf = SharedMemoryBuffer(self.size) self.offset = size addr, _ = self.buf.getbuffer() return 0, self.buf else: offset = self.offset self.offset += size addr, _ = self.buf.getbuffer() return offset, self.buf
def _allocate_tiny(self, size): free = self.size - self.offset if (size > free): self.size += mmap.PAGESIZE if (self.size > 1024**2): self.size = 1024**2 self.buf = SharedMemoryBuffer(self.size) self.offset = size addr, _= self.buf.getbuffer() return 0, self.buf else: offset = self.offset self.offset += size addr, _= self.buf.getbuffer() return offset, self.buf
class simple_allocator(object): def __init__(self): self.lock = threading.Lock() self.size = mmap.PAGESIZE self.offset = 0 self.buf = SharedMemoryBuffer(self.size) def _allocate_tiny(self, size): free = self.size - self.offset if (size > free): self.size += mmap.PAGESIZE if (self.size > 1024**2): self.size = 1024**2 self.buf = SharedMemoryBuffer(self.size) self.offset = size addr, _= self.buf.getbuffer() return 0, self.buf else: offset = self.offset self.offset += size addr, _= self.buf.getbuffer() return offset, self.buf def _allocate_big(self, size): buf = SharedMemoryBuffer(size) addr, _ = buf.getbuffer() return 0, buf def allocate(self, size): with self.lock: if size > mmap.PAGESIZE: offset, buf = self._allocate_big(size) else: offset, buf = self._allocate_tiny(size) return offset, buf
def _allocate_big(self, size): buf = SharedMemoryBuffer(size) addr, _ = buf.getbuffer() return 0, buf
def __init__(self): self.lock = threading.Lock() self.size = mmap.PAGESIZE self.offset = 0 self.buf = SharedMemoryBuffer(self.size)