[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-09 Thread Andrew Svetlov

Andrew Svetlov added the comment:

Raymond, is there known custom third-party queue class derived from 
queue.Queue? I believe all those are in stdlib only.

Also locking guarantee is promised by comment in source code only, 
documentation says nothing about it.

I believe proposed change will not make any harm, but ok with closing as 
wontfix if you fill it's dangerous.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-09 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:

Yes, there are.

https://code.openhub.net/search?s=%22def%20_qsize%22%20%22import%20Queue%22pp=0ff=1mp=1ml=1me=1md=1filterChecked=true

--
nosy: +serhiy.storchaka

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-09 Thread Raymond Hettinger

Changes by Raymond Hettinger raymond.hettin...@gmail.com:


--
resolution:  - not a bug
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-08 Thread Yury Selivanov

Changes by Yury Selivanov yseliva...@gmail.com:


--
nosy: +yselivanov

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-08 Thread Andrew Svetlov

Changes by Andrew Svetlov andrew.svet...@gmail.com:


--
type:  - enhancement

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-08 Thread Andrew Svetlov

New submission from Andrew Svetlov:

Now those methods use lock for querying queue size, like

def qsize(self):
with self.mutex:
return self._qsize()

The lock is not necessary because thread context switch may be done *after* 
returning from mutex protected code but *before* getting result by calling side.

All three methods (qsize(), empty() and full()) gives *approximated value*, so 
getting rid of lock doesn't make it less stringent.

--
components: Library (Lib)
messages: 245029
nosy: asvetlov
priority: low
severity: normal
status: open
title: Drop redundant lock in queue.Queue methods qsize(), empty() and full()
versions: Python 3.5, Python 3.6

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-08 Thread Raymond Hettinger

Changes by Raymond Hettinger raymond.hettin...@gmail.com:


--
assignee:  - rhettinger
nosy: +rhettinger

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24411] Drop redundant lock in queue.Queue methods qsize(), empty() and full()

2015-06-08 Thread Raymond Hettinger

Raymond Hettinger added the comment:

It may seem pointless to hold the lock, but it is guaranteed behavior (and has 
been so for a very, very long time).

'''
# Override these methods to implement other queue organizations 
  
# (e.g. stack or priority queue).   
  
# These will only be called with appropriate locks held   

# Initialize the queue representation   
  
def _init(self, maxsize):
self.queue = deque()

def _qsize(self):
return len(self.queue)

# Put a new item in the queue   
  
def _put(self, item):
self.queue.append(item)

# Get an item from the queue
  
def _get(self):
return self.queue.popleft()
 
'''

--
versions:  -Python 3.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24411
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com