xotl.tools.future.threading - Higher-level threading interface

This module extends the standard library’s threading. You may use it as a drop-in replacement in many cases.

Avoid importing * from this module since could be different in Python 2.7 and Python 3.3.

We added the following features.

xotl.tools.future.threading.async_call(func, args=None, kwargs=None, callback=None, onerror=None)[source]

Executes a function asynchronously.

The function receives the given positional and keyword arguments

If callback is provided, it is called with a single positional argument: the result of calling func(*args, **kwargs).

If the called function ends with an exception and onerror is provided, it is called with the exception object.

Returns:An event object that gets signalled when the function ends its execution whether normally or with an error.
Return type:Event
xotl.tools.future.threading.sync_call(funcs, callback, timeout=None)[source]

Calls several functions, each one in it’s own thread.

Waits for all to end.

Each time a function ends the callback is called (wrapped in a lock to avoid race conditions) with the result of the as a single positional argument.

If timeout is not None it sould be a float number indicading the seconds to wait before aborting. Functions that terminated before the timeout will have called callback, but those that are still working will be ignored.

Todo

Abort the execution of a thread.

Parameters:funcs – A sequences of callables that receive no arguments.