Panda3D

- Main Page
- Packages
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Public Attributes | Static Public Attributes

# TaskManager Class Reference

List of all members.

## Public Member Functions
def | __init__
def | __repr__
def | add
def | destroy
def | doMethodLater
def | doYield
def | finalInit
def | flushTaskProfiles
def | getAllTasks
def | getCurrentTask
def | getDoLaters
def | getProfileFrames
def | getProfileFramesSV
def | getProfileSession
def | getProfileTasks
def | getProfileTasksSV
def | getTasks
def | getTasksMatching
def | getTasksNamed
def | hasTaskChain
def | hasTaskNamed
def | invokeDefaultHandler
def | keyboardInterruptHandler
def | logTaskProfiles
def | popupControls
def | profileFrames
def | remove
def | removeTasksMatching
def | replaceMethod
def | run
def | setClock
def | setProfileFrames
def | setProfileTasks
def | setupTaskChain
def | step
def | stop
## Public Attributes
| addedTaskName
| clearedTaskName
| destroyed
| fKeyboardInterrupt
| globalClock
| interruptCount
| mgr
| resumeFunc
| running
| stepping
## Static Public Attributes
| extendedExceptions = False
float | MaxEpochSpeed = 1.0
tuple | notify = directNotify.newCategory("TaskManager")

## Constructor & Destructor Documentation

def __init__ | ( |  | self | ) |

## Member Function Documentation

def __repr__ | ( |  | self | ) |

def add | ( |  | self,
|  |  | funcOrTask,
|  |  | name = `None`,
|  |  | sort = `None`,
|  |  | extraArgs = `None`,
|  |  | priority = `None`,
|  |  | uponDeath = `None`,
|  |  | appendTask = `False`,
|  |  | taskChain = `None`,
|  |  | owner = `None`
| ) |  |

    Add a new task to the taskMgr.  The task will begin executing
    immediately, or next frame if its sort value has already
    passed this frame.

    The parameters are:

    funcOrTask - either an existing Task object (not already added
    to the task manager), or a callable function object.  If this
    is a function, a new Task object will be created and returned.

    name - the name to assign to the Task.  Required, unless you
    are passing in a Task object that already has a name.

    extraArgs - the list of arguments to pass to the task
    function.  If this is omitted, the list is just the task
    object itself.

    appendTask - a boolean flag.  If this is true, then the task
    object itself will be appended to the end of the extraArgs
    list before calling the function.

    sort - the sort value to assign the task.  The default sort is
    0.  Within a particular task chain, it is guaranteed that the
    tasks with a lower sort value will all run before tasks with a
    higher sort value run.

    priority - the priority at which to run the task.  The default
    priority is 0.  Higher priority tasks are run sooner, and/or
    more often.  For historical purposes, if you specify a
    priority without also specifying a sort, the priority value is
    understood to actually be a sort value.  (Previously, there
    was no priority value, only a sort value, and it was called
    "priority".)

    uponDeath - a function to call when the task terminates,
    either because it has run to completion, or because it has
    been explicitly removed.

    taskChain - the name of the task chain to assign the task to.

    owner - an optional Python object that is declared as the
    "owner" of this task for maintenance purposes.  The owner must
    have two methods: owner._addTask(self, task), which is called
    when the task begins, and owner._clearTask(self, task), which
    is called when the task terminates.  This is all the owner
    means.

    The return value of add() is the new Task object that has been
    added, or the original Task object that was passed in.

def destroy | ( |  | self | ) |

def doMethodLater | ( |  | self,
|  |  | delayTime,
|  |  | funcOrTask,
|  |  | name,
|  |  | extraArgs = `None`,
|  |  | sort = `None`,
|  |  | priority = `None`,
|  |  | taskChain = `None`,
|  |  | uponDeath = `None`,
|  |  | appendTask = `False`,
|  |  | owner = `None`
| ) |  |

    Adds a task to be performed at some time in the future.
    This is identical to add(), except that the specified
    delayTime is applied to the Task object first, which means
    that the task will not begin executing until at least the
    indicated delayTime (in seconds) has elapsed.

    After delayTime has elapsed, the task will become active, and
    will run in the soonest possible frame thereafter.  If you
    wish to specify a task that will run in the next frame, use a
    delayTime of 0.

def doYield | ( |  | self,
|  |  | frameStartTime,
|  |  | nextScheduledTaskTime
| ) |  |

def finalInit | ( |  | self | ) |

def flushTaskProfiles | ( |  | self,
|  |  | name = `None`
| ) |  |

def getAllTasks | ( |  | self | ) |

    Returns list of all tasks, active and sleeping, in
    arbitrary order.

def getCurrentTask | ( |  | self | ) |

    Returns the task currently executing on this thread, or
    None if this is being called outside of the task manager.

def getDoLaters | ( |  | self | ) |

    Returns list of all sleeping tasks in arbitrary order.

def getProfileFrames | ( |  | self | ) |

def getProfileFramesSV | ( |  | self | ) |

def getProfileSession | ( |  | self,
|  |  | name = `None`
| ) |  |

def getProfileTasks | ( |  | self | ) |

def getProfileTasksSV | ( |  | self | ) |

def getTasks | ( |  | self | ) |

    Returns list of all active tasks in arbitrary order.

def getTasksMatching | ( |  | self,
|  |  | taskPattern
| ) |  |

    Returns a list of all tasks, active or sleeping, with a
    name that matches the pattern, which can include standard
    shell globbing characters like *, ?, and [].

def getTasksNamed | ( |  | self,
|  |  | taskName
| ) |  |

    Returns a list of all tasks, active or sleeping, with the
    indicated name.

def hasTaskChain | ( |  | self,
|  |  | chainName
| ) |  |

    Returns true if a task chain with the indicated name has
    already been defined, or false otherwise.  Note that
    setupTaskChain() will implicitly define a task chain if it has
    not already been defined, or modify an existing one if it has,
    so in most cases there is no need to check this method
    first.

def hasTaskNamed | ( |  | self,
|  |  | taskName
| ) |  |

    Returns true if there is at least one task, active or
    sleeping, with the indicated name.

def invokeDefaultHandler | ( |  | self,
|  |  | signalNumber,
|  |  | stackFrame
| ) |  |

def keyboardInterruptHandler | ( |  | self,
|  |  | signalNumber,
|  |  | stackFrame
| ) |  |

def logTaskProfiles | ( |  | self,
|  |  | name = `None`
| ) |  |

def popupControls | ( |  | self | ) |

def profileFrames | ( |  | self,
|  |  | num = `None`,
|  |  | session = `None`,
|  |  | callback = `None`
| ) |  |

def remove | ( |  | self,
|  |  | taskOrName
| ) |  |

    Removes a task from the task manager.  The task is stopped,
    almost as if it had returned task.done.  (But if the task is
    currently executing, it will finish out its current frame
    before being removed.)  You may specify either an explicit
    Task object, or the name of a task.  If you specify a name,
    all tasks with the indicated name are removed.  Returns the
    number of tasks removed.

def removeTasksMatching | ( |  | self,
|  |  | taskPattern
| ) |  |

    Removes all tasks whose names match the pattern, which can
    include standard shell globbing characters like *, ?, and [].
    See also remove().

    Returns the number of tasks removed.

def replaceMethod | ( |  | self,
|  |  | oldMethod,
|  |  | newFunction
| ) |  |

def run | ( |  | self | ) |

    Starts the task manager running.  Does not return until an
    exception is encountered (including KeyboardInterrupt).

def setClock | ( |  | self,
|  |  | clockObject
| ) |  |

def setProfileFrames | ( |  | self,
|  |  | profileFrames
| ) |  |

def setProfileTasks | ( |  | self,
|  |  | profileTasks
| ) |  |

def setupTaskChain | ( |  | self,
|  |  | chainName,
|  |  | numThreads = `None`,
|  |  | tickClock = `None`,
|  |  | threadPriority = `None`,
|  |  | frameBudget = `None`,
|  |  | frameSync = `None`,
|  |  | timeslicePriority = `None`
| ) |  |

    Defines a new task chain.  Each task chain executes tasks
    potentially in parallel with all of the other task chains (if
    numThreads is more than zero).  When a new task is created, it
    may be associated with any of the task chains, by name (or you
    can move a task to another task chain with
    task.setTaskChain()).  You can have any number of task chains,
    but each must have a unique name.

    numThreads is the number of threads to allocate for this task
    chain.  If it is 1 or more, then the tasks on this task chain
    will execute in parallel with the tasks on other task chains.
    If it is greater than 1, then the tasks on this task chain may
    execute in parallel with themselves (within tasks of the same
    sort value).

    If tickClock is True, then this task chain will be responsible
    for ticking the global clock each frame (and thereby
    incrementing the frame counter).  There should be just one
    task chain responsible for ticking the clock, and usually it
    is the default, unnamed task chain.

    threadPriority specifies the priority level to assign to
    threads on this task chain.  It may be one of TPLow, TPNormal,
    TPHigh, or TPUrgent.  This is passed to the underlying
    threading system to control the way the threads are scheduled.

    frameBudget is the maximum amount of time (in seconds) to
    allow this task chain to run per frame.  Set it to -1 to mean
    no limit (the default).  It's not directly related to
    threadPriority.

    frameSync is true to force the task chain to sync to the
    clock.  When this flag is false, the default, the task chain
    will finish all of its tasks and then immediately start from
    the first task again, regardless of the clock frame.  When it
    is true, the task chain will finish all of its tasks and then
    wait for the clock to tick to the next frame before resuming
    the first task.  This only makes sense for threaded tasks
    chains; non-threaded task chains are automatically
    synchronous.

    timeslicePriority is False in the default mode, in which each
    task runs exactly once each frame, round-robin style,
    regardless of the task's priority value; or True to change the
    meaning of priority so that certain tasks are run less often,
    in proportion to their time used and to their priority value.
    See AsyncTaskManager.setTimeslicePriority() for more.

def step | ( |  | self | ) |

    Invokes the task manager for one frame, and then returns.
    Normally, this executes each task exactly once, though task
    chains that are in sub-threads or that have frame budgets
    might execute their tasks differently.

def stop | ( |  | self | ) |

## Member Data Documentation

addedTaskName

clearedTaskName

destroyed

extendedExceptions = False`[static]`

fKeyboardInterrupt

globalClock

interruptCount

float MaxEpochSpeed = 1.0`[static]`

mgr

tuple notify = directNotify.newCategory("TaskManager")`[static]`

resumeFunc

running

stepping

All Classes Namespaces Functions Variables Enumerations Enumerator Properties