Queue uses multiprocessing.util.Finalize, which uses weakrefs to track when the object is out of scope, so this is actually expected behavior.
IMHO it is not a very good approach, but changing the API to use explicit close methods is a little late at this point, I guess.