def METHOD_NAME(self, size):
    # return a block of right size (possibly rounded up)
    assert 0 <= size < sys.maxsize
    if os.getpid() != self._lastpid:
        self.__init__()                     # reinitialize after fork
    self._lock.acquire()
    self._free_pending_blocks()
    try:
        size = self._roundup(max(size,1), self._alignment)
        (arena, start, stop) = self._malloc(size)
        new_stop = start + size
        if new_stop < stop:
            self._free((arena, new_stop, stop))
        block = (arena, start, new_stop)
        self._allocated_blocks.add(block)
        return block
    finally:
        self._lock.release()