I've seen instances where qsize() and len() has been used to compute the size of the queue. What is the distinction between the two?
Asked
Active
Viewed 2.8k times
21
mingxiao
- 1,712
- 4
- 21
- 33
-
Related question: [python - Why is len() not implemented for Queues? - Stack Overflow](https://stackoverflow.com/questions/47585367/why-is-len-not-implemented-for-queues) – user202729 Aug 14 '21 at 03:16
2 Answers
23
For most containers, you'll want len, but Queue.Queue doesn't actually support len. This may be because it's old or because getting the length of a queue in a multithreaded environment isn't particularly useful. In any case, if you want the (approximate) size of a Queue, you want qsize.
user2357112
- 260,549
- 28
- 431
- 505
-
2len might tempt people to check for nonzero length before doing a get, assuming that the get won't block. – dstromberg Dec 18 '13 at 00:19
-
I am getting this crash on Mac while calling qsize return self._maxsize - self._sem._semlock._get_value() NotImplementedError any help ? – Venu Gopal Tewari Jun 14 '19 at 05:23
-
1
3
queue.qsize() doesn't return the number of bytes in the queue. It returns the number of "things" placed in the queue.
If you put 5 byte-arrays of 100 bytes in the queue, the qsize() will be 5, not 500.
Kate Orlova
- 3,225
- 5
- 11
- 35
user3145004
- 109
- 1
- 11