dragon.mpbridge.synchronize.DragonSemaphore

class DragonSemaphore

Bases: Semaphore

A sempahore co-located on the same node by default as the creating process

__init__(*args, ctx, **kwargs)

Create a Semaphore object that can be shared across Dragon processes.

Parameters:
  • value (int , optional) – initial value for the counter, defaults to 1

  • m_uid (int , optional) – dragon managed memory pool id to use, defaults to the standard pool.

  • bounded (bool , optional) – set if the value of the Semaphore cannot exceed its initial value, defaults to False

Methods

__init__(*args, ctx, **kwargs)

Create a Semaphore object that can be shared across Dragon processes.

acquire([blocking, timeout])

Acquire the Semaphore, decrementing the counter, blocking other processes when the counter is decremented to 0.

get_value()

Get the value of the internal counter without acquiring the Semaphore.

release([n])

Release the Semaphore, incrementing the internal value by n, thus unblocking up to n processes.

__init__(*args, ctx, **kwargs)

Create a Semaphore object that can be shared across Dragon processes.

Parameters:
  • value (int , optional) – initial value for the counter, defaults to 1

  • m_uid (int , optional) – dragon managed memory pool id to use, defaults to the standard pool.

  • bounded (bool , optional) – set if the value of the Semaphore cannot exceed its initial value, defaults to False

acquire(blocking: bool = True, timeout: float = None) bool

Acquire the Semaphore, decrementing the counter, blocking other processes when the counter is decremented to 0.

Parameters:
  • blocking (bool , optional) – block the process if the Semaphore cannot be acquired immediately, defaults to True

  • timeout (float , optional) – timeout for a block in seconds, defaults to None (i.e. no timeout)

get_value() int

Get the value of the internal counter without acquiring the Semaphore.

release(n: int = 1) None

Release the Semaphore, incrementing the internal value by n, thus unblocking up to n processes.

Parameters:

n (int , optional) – how much to increment the internal value by, defaults to 1