New submission from Irvin Probst:

In the the Manager's lists documentation one can read:

"""
list()
list(sequence)
Create a shared list object and return a proxy for it.
"""

IMHO it is really unclear whether these lists have something more than 
traditionnal lists or not. 

When you have a look at managers.py it is quite obvious, unless I'm completely 
wrong, that the underlying shared object is a standard list with a basic proxy 
to expose all the "underscore underscore stuff".

"""
BaseListProxy = MakeProxyType('BaseListProxy', (
    '__add__', '__contains__', '__delitem__', '__getitem__', '__len__',
    '__mul__', '__reversed__', '__rmul__', '__setitem__',
    'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
    'reverse', 'sort', '__imul__'
    ))

class ListProxy(BaseListProxy):
    def __iadd__(self, value):
        self._callmethod('extend', (value,))
        return self
    def __imul__(self, value):
        self._callmethod('__imul__', (value,))
        return self

    [snip a couple of lines]

SyncManager.register('list', list, ListProxy)
"""

That's really confusing because, unless reading managers.py, you have the 
feeling that the manager's lists() are somehow different than standard lists.

The other problem is that, if you don't know what level of thread-safeness the 
GIL guarantees on the lists in the manager's server thread, you have the 
feeling that the safeness comes from some obscure Manager's black magic 
managing concurrent access for you.

May I suggest to add in the documentation:


1/

"""
list()
list(sequence)
Create a shared list (add here a link to 
http://docs.python.org/3.3/library/stdtypes.html#list) object and return a 
proxy for it.
"""

2/ 

Clearly state somewhere in the manager's documentation that it's the 
developper's job to ensure that the proxied methods are thread safe. Write it 
in bold and red please :-) 

3/ 
Perhaps add an example with a custom object like the code I attached to this 
report.


Thanks for your time.

----------
files: example.py
messages: 211220
nosy: Irvin.Probst
priority: normal
severity: normal
status: open
title: Manager documentation unclear about lists and thread safeness
Added file: http://bugs.python.org/file34080/example.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue20626>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to