chainlet.driver module

class chainlet.driver.ChainDriver

Bases: object

Actively drives chains by pulling them

This driver pulls all mounted chains via a single thread. This drives chains synchronously, but blocks all chains if any individual chain blocks.

mount(*chains)

Add chains to this driver

run()

Start driving the chain, block until done

running

Whether the driver is running, either via run() or start()

start(daemon=True)

Start driving the chain asynchronously, return immediately

Parameters:daemon (bool) – ungracefully kill the driver when the program terminates
class chainlet.driver.ConcurrentChainDriver(daemon=True)

Bases: chainlet.driver.ChainDriver

Actively drives chains by pulling them

This driver pulls all mounted chains via independent stacks. This drives chains concurrently, without blocking for any specific chain. Chains sharing elements may need to be synchronized explicitly.

Parameters:daemon (bool) – run chains as daemon, i.e. do not wait for them to exit when terminating
create_runner(mount)
run()

Start driving the chain, block until done

class chainlet.driver.MultiprocessChainDriver(daemon=True)

Bases: chainlet.driver.ConcurrentChainDriver

Actively drives chains by pulling them

This driver pulls all mounted chains via independent processes. This drives chains concurrently, without blocking for any specific chain. Chains sharing elements cannot exchange state between them.

Parameters:daemon (bool) – run processes as daemon, i.e. do not wait for them to finish
create_runner(mount)
class chainlet.driver.ThreadedChainDriver(daemon=True)

Bases: chainlet.driver.ConcurrentChainDriver

Actively drives chains by pulling them

This driver pulls all mounted chains via independent threads. This drives chains concurrently, without blocking for any specific chain. Chains sharing elements may need to be synchronized explicitly.

Parameters:daemon (bool) – run threads as daemon, i.e. do not wait for them to finish
create_runner(mount)