> import Queue > b = Queue.Queue(0) > b.put(9999) > b.get() # this is ok, it pops out 9999 > b.get() # this one does not return anything and is hang on > there > > Anybody knows what is going on with the second b.get()?
>>> help(Queue.Queue) : : | get(self, block=True, timeout=None) | Remove and return an item from the queue. | | If optional args 'block' is true and | 'timeout' is None (the default), block if | necessary until an item is available. If | 'timeout' is a positive number, it blocks | at most 'timeout' seconds and raises the | Empty exception if no item was available | within that time. Otherwise ('block' is | false), return an item if one is | immediately available, else raise the | Empty exception ('timeout' is ignored in | that case). | | get_nowait(self) | Remove and return an item from the queue | without blocking. | | Only get an item if one is immediately | available. Otherwise raise the Empty | exception. : : Notice that by default, get() will block until there's something to read. You can use either b.get(block=False) or b.get_nowait() In either case, an exception will be raised when the Queue is empty, to let you know as much. Just trap for the exception and do as you please. -tkc -- http://mail.python.org/mailman/listinfo/python-list