Giampaolo Rodola' <[email protected]> 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 <[email protected]>
<https://bugs.python.org/issue35813>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com