Queue cleanup

Paul Rubin no.email at nospam.invalid
Wed Aug 11 14:16:29 EDT 2010


EW <ericwoodworth at gmail.com> writes:
> I thought about doing it that way and I could do it that way but it
> still seems like there should be a way to clean up Queues on my own.
> If I did it this way then I guess I'd be relying on garbage collection
> when the script ended to clean up the Queues for me.

Oh, I see.  As long as it's possible to start new producer or consumer
threads that touch a queue, obviously that queue has to still be around.
If the program starts all its threads at the beginning, then runs til
they exit, then does more stuff, then you could do something like:

    # make dictonary of queues, one queue per task type
    queues = {'sql': Queue(), 'logging': Queue(), ... }

    for i in <whatever threads you want>
       threading.Thread(target=your_handler, args=[queues])

    del queues

and then when all the threads exit, there are no remaining references to
the queues.  But why do you care?  Queues aren't gigantic structures,
they're just a list (collections.deque) with an rlock.  It's fine to let
the gc clean them up; that's the whole point of having a gc in the first
place.



More information about the Python-list mailing list