Threading Pool Event()
Aahz
aahz at pythoncraft.com
Fri Jul 18 18:47:13 EDT 2003
In article <NDZRa.273$vD1.11889 at nnrp1.ozemail.com.au>,
Graeme Matthew <gsmatthew at ozemail.com.au> wrote:
>
>Thanks, ive actually been using your OSCON slides which have helped a
>lot. So it technically correct that all worker threads in a thread
>pool are either doing some work or polling the queue to find out if
>there is a job to process ?
The whole point is that it *doesn't* poll. It blocks on a lock internal
to the Queue object. That makes it extremely efficient.
>eg: (pseudocodish :-))
>
>def run(self):
>
> while 1:
>
> self.lock.acquire()
>
> if QueueManager.HasJob:
> job = QueueManager.GetFreeJob()
> __processJob(job)
>
> self.lock.release()
>
> def __processJob(self):
>
> blah blah blah .....
Nope, it's even simpler than that:
def run(self):
done = False
while not done:
job = q.get()
if job.done:
done = True
else:
__processJob(job)
The Queue handles all the locks for you.
--
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
A: No.
Q: Is top-posting okay?
More information about the Python-list
mailing list