Runner¶
Runner.py: Task scheduling and execution
-
waflib.Runner.
GAP
= 10¶ Wait for free tasks if there are at least
GAP * njobs
in queue
-
class
waflib.Runner.
TaskConsumer
[source]¶ Bases:
threading.Thread
Task consumers belong to a pool of workers
They wait for tasks in the queue and then use
task.process(...)
-
ready
= None¶ Obtain
waflib.Task.TaskBase
instances from this queue.
-
loop
()[source]¶ Obtain tasks from
waflib.Runner.TaskConsumer.ready
and callwaflib.Task.TaskBase.process()
. If the object is a function, execute it.
-
__doc__
= '\n\tTask consumers belong to a pool of workers\n\n\tThey wait for tasks in the queue and then use ``task.process(...)``\n\t'¶
-
__module__
= 'waflib.Runner'¶
-
-
waflib.Runner.
pool
= <Queue.Queue instance>¶ Pool of task consumer objects
-
waflib.Runner.
get_pool
()[source]¶ Obtain a task consumer from
waflib.Runner.pool
. Do not forget to put it back by usingwaflib.Runner.put_pool()
and reset properly (original waiting queue).Return type: waflib.Runner.TaskConsumer
-
waflib.Runner.
put_pool
(x)[source]¶ Return a task consumer to the thread pool
waflib.Runner.pool
Parameters: x ( waflib.Runner.TaskConsumer
) – task consumer object
-
class
waflib.Runner.
Parallel
(bld, j=2)[source]¶ Bases:
object
Schedule the tasks obtained from the build context for execution.
-
__init__
(bld, j=2)[source]¶ The initialization requires a build context reference for computing the total number of jobs.
-
numjobs
= None¶ Number of consumers in the pool
-
bld
= None¶ Instance of
waflib.Build.BuildContext
-
outstanding
= None¶ List of
waflib.Task.TaskBase
that may be ready to be executed
-
frozen
= None¶ List of
waflib.Task.TaskBase
that cannot be executed immediately
-
out
= None¶ List of
waflib.Task.TaskBase
returned by the task consumers
-
count
= None¶ Amount of tasks that may be processed by
waflib.Runner.TaskConsumer
-
processed
= None¶ Amount of tasks processed
-
stop
= None¶ Error flag to stop the build
-
error
= None¶ Tasks that could not be executed
-
biter
= None¶ Task iterator which must give groups of parallelizable tasks when calling
next()
-
__doc__
= '\n\tSchedule the tasks obtained from the build context for execution.\n\t'¶
-
__module__
= 'waflib.Runner'¶
-
dirty
= None¶ Flag to indicate that tasks have been executed, and that the build cache must be saved (call
waflib.Build.BuildContext.store()
)
-
get_next_task
()[source]¶ Obtain the next task to execute.
Return type: waflib.Task.TaskBase
-
postpone
(tsk)[source]¶ A task cannot be executed at this point, put it in the list
waflib.Runner.Parallel.frozen
.Parameters: tsk ( waflib.Task.TaskBase
) – task
-
refill_task_list
()[source]¶ Put the next group of tasks to execute in
waflib.Runner.Parallel.outstanding
.
-
add_more_tasks
(tsk)[source]¶ Tasks may be added dynamically during the build by binding them to the task
waflib.Task.TaskBase.more_tasks
Parameters: tsk ( waflib.Task.TaskBase
) – task
-
get_out
()[source]¶ Obtain one task returned from the task consumers, and update the task count. Add more tasks if necessary through
waflib.Runner.Parallel.add_more_tasks
.Return type: waflib.Task.TaskBase
-
add_task
(tsk)[source]¶ Pass a task to a consumer.
Parameters: tsk ( waflib.Task.TaskBase
) – task
-
error_handler
(tsk)[source]¶ Called when a task cannot be executed. The flag
waflib.Runner.Parallel.stop
is set, unless the build is executed with:$ waf build -k
Parameters: tsk ( waflib.Task.TaskBase
) – task
-
start
()[source]¶ Give tasks to
waflib.Runner.TaskConsumer
instances until the build finishes or thestop
flag is set. If only one job is used, then execute the tasks one by one, without consumers.
-