added Job pstats, derive from DirectObject

This commit is contained in:
Darren Ranalli 2007-04-07 08:26:30 +00:00
parent 1b12685fee
commit e5fc82670d
2 changed files with 23 additions and 1 deletions

View File

@ -1,4 +1,9 @@
class Job:
from direct.showbase.DirectObject import DirectObject
if __debug__:
from pandac.PandaModules import PStatCollector
class Job(DirectObject):
# Base class for cpu-intensive or non-time-critical operations that
# are run through the JobManager.
@ -15,12 +20,17 @@ class Job:
self._generator = None
self._id = Job._SerialGen.next()
self._printing = False
if __debug__:
self._pstats = PStatCollector("App:Show code:jobManager:%s" % self._name)
def destroy(self):
del self._name
del self._generator
del self._printing
def getFinishedEvent(self):
return 'job-finished-%s' % self._id
def run(self):
# this is a generator
# override and do your processing

View File

@ -83,6 +83,8 @@ class JobManager:
# grab the job
job = self._pri2jobId2job[pri][jobId]
gen = job._getGenerator()
if __debug__:
job._pstats.start()
job.resume()
while True:
try:
@ -96,8 +98,11 @@ class JobManager:
job.suspend()
self.remove(job)
job.finished()
messenger.send(job.getFinishedEvent())
# job is done.
break
if __debug__:
job._pstats.stop()
# how long should we run per frame?
def getTimeslice(self):
@ -125,6 +130,8 @@ class JobManager:
jobId = self._pri2jobIds[self._highestPriority][0]
job = jobId2job[jobId]
gen = job._getGenerator()
if __debug__:
job._pstats.start()
job.resume()
while globalClock.getRealTime() < endT:
try:
@ -138,6 +145,9 @@ class JobManager:
job.suspend()
self.remove(job)
job.finished()
if __debug__:
job._pstats.stop()
messenger.send(job.getFinishedEvent())
# highest-priority job is done.
# grab the next one if there's time left
break
@ -145,6 +155,8 @@ class JobManager:
# we've run out of time
#assert self.notify.debug('timeslice end: %s, %s' % (endT, globalClock.getRealTime()))
job.suspend()
if __debug__:
job._pstats.stop()
break
if len(self._pri2jobId2job) == 0: