Giampaolo Rodola' <g.rod...@gmail.com> added the comment:

Hopefully my last iteration: =)

1) As for SharedMemoryManager, I believe it should live in 
multiprocessing.managers, not shared_memory.py. It's a subclass of Manager and 
behaves like a manager (start(), shutdown(), get_server(), etc.), so IMO that's 
its natural place. 

2) Same for SharedMemoryServer (which is a subclass of 
multiprocessing.managers.Server). SharedMemoryTracker appears to be just a 
support class for it, so IMO it should either be private or not documented.

3) ShareableList name is kinda inconsistent with other classes (they all have a 
"Shared" prefix). I'd call it SharedList instead.

4) Ideally the (public) APIs I have in mind are:

    multiprocessing.managers.SharedMemoryManager
    multiprocessing.managers._SharedMemoryTracker
    multiprocessing.managers.SharedMemoryServer  (not documented)
    multiprocessing.shared_memory.SharedMemory
    multiprocessing.shared_memory.SharedList 
    multiprocessing.shared_memory.WindowsNamedSharedMemory  (maybe)
    multiprocessing.shared_memory.PosixSharedMemory  (maybe)

AFAIU there are 2 distinct use-cases at play: 
- two separate apps agreeing on a specific fixed memory *name* to attach to, 
which will use SharedMemory/List directly
- one single app using a manager and a worker, which will use 
SharedMemoryManager, and get SharedMemory/List directly from it (see 
https://github.com/python/cpython/pull/11816/files#r257458137)
IMO the 2 different namespaces would reflect and enforce this separation of use 
cases. 

4) I have some reservations about SharedMemory's "flags" and "mode" args.
* flags (O_CREAT, O_EXCL, O_CREX, O_TRUNC, O_RDONLY): it seems it may conflict 
with "read_only" arg. I wonder if we could achieve the same goal with more 
high-level named args instead (e.g. "create" / "attach_if_exists"). If in 
doubt, I would recommend to simply drop it for now. 
* mode: same considerations as above. Doc says "Its specification is not 
enforceable on all platforms" which makes me think it's probably better to drop 
it (also not sure why it defaults to 384).

Hope this helps.

----------

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

Reply via email to