dragon.managed_memory – Managed Memory Cython Adapter

This page documents the Cython interface for the Dragon Managed Memory library. For a description of Managed Memory, Pools, and general functionality please refer to this document.

All functions and variables listed as C language are implemented with the cdef keyword and are not directly accessible from python-space.

Factory init methods are used in place of pythonic constructors as they require Python object arguments, while some instances require the use of C structs.

Objects

MemoryAlloc

class MemoryAlloc

Python object for managing allocations made in the pool.

dragonMemoryDescr_t mem_descr

Memory descriptor, used internally.

size_t mem_size

Size of the allocated memory. Used for returning memoryviews.

static attach(serialized_bytes)

Attaches a new MemoryAlloc object to an existing serialized memory descriptor. Must be explicitly cleaned up using the detach method.

Parameters

serialized_bytes – Bytes object containing a serialized memory descriptor

Returns

MemoryAlloc object

Return type

MemoryAlloc

Raises

RuntimeError

get_memview()

Returns a memoryview instance of the underlying memory allocation.

Returns

memoryview

Return type

memoryview

Raises

RuntimeError

serialize()

Serializes the underlying memory descriptor and returns it as a bytes object.

Returns

bytes object of the serialized descriptor

Return type

bytes

Raises

RuntimeError

detach()

Detaches from the underlying memory.

Raises

RuntimeError

MemoryAllocations

class MemoryAllocations

Python object for retrieving and searching through a current list of allocations in the pool manifest.

dragonMemoryPoolAllocations_t allocs

Underlying C struct

alloc_type(idx)

Returns the type of the given allocation.

Returns

AllocType of the specified allocation index

Return type

AllocType

Raises

RuntimeError (index out of bounds)

alloc_id(idx)

Return the unique ID of the given allocation

Returns

ID of the specified allocation

Return type

int

Raises

RuntimeError (index out of bounds)

MemoryPool

class MemoryPool

Python object for creating, attaching to, etc. pools. Memory allocations and frees are performed through this object, as well as retrieving a list of allocations through a MemoryAllocations object.

dragonMemoryPoolDescr_t _pool_hdl

Internal C struct pool descriptor handle.

static attach(pool_serialized)

Attaches to an existing memory pool. Cleaning requires an explicit call to detach.

Parameters

pool_serialized – bytes object of a serialized pool descriptor.

Returns

MemoryPool object

Return type

MemoryPool

Raises

DragonPoolAttachFail

destroy()

Destroys the pool created by this object.

Raises

DragonPoolError

detach(serialize=False)

Detaches the pool handle owned by this object.

Parameters

serialize – Boolean to optionally store a serializer before detaching

Raises

DragonPoolError

serialize()

Serialized the pool descriptor held by this object. Used for passing to other processes for attaching. Stores a copy in the object when called the first time.

Returns

Bytes object of the pool serializer struct.

Return type

bytes

Raises

DragonPoolError

alloc(size_t size)

Allocate a new chunk of memory of size size in the memory pool. Returns a new MemoryAlloc object on success.

Parameters

size – Size in bytes to allocate

Returns

MemoryAlloc object with new allocation

Return type

object

Raises

DragonPoolError

alloc_blocking(size_t size, timeout=None)

Allocate a new chunk of memory of size size in the memory pool. Returns a new MemoryAlloc object on success. If size block is unavailable, it blocks timeout seconds waiting for an allocation. If timeout is None, it blocks without timeout.

Parameters

size – Size in bytes to allocate

Returns

MemoryAlloc object with new allocation

Return type

object

Raises

DragonPoolException

free(MemoryAlloc mem_obj)

Frees the allocation held by mem_obj in the pool.

Parameters

mem_obj – The MemoryAlloc object holding the descriptor for the given allocation to free

Raises

RuntimeError

get_allocations()

Retrieves a list of all active allocations in the memory pool.

Returns

MemoryAllocations object

Return type

object

Raises

DragonPoolError

allocation_exists(alloc_type, alloc_id)

Given a type and ID, check whether a given allocation exists in the pool manifest.

Parameters
  • alloc_type – AllocType enum of the allocation

  • alloc_id – Unique ID of the allocation

Returns

True or False

Return type

Boolean

Raises

DragonPoolError

get_alloc_by_id(alloc_type, alloc_id)

Retrieve a specific allocation from the pool by its type and unique ID.

Parameters
  • alloc_type – AllocType enum of the allocation

  • alloc_id – Unique ID of the allocation

Returns

MemoryAlloc object containing a description of the allocation

Return type

object

Raises

DragonPoolError