Add `name` parameter to a `SharedMemoryManager.ShareableList` method

Offen Anfängerfreundlich
#96,215 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
60/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
python

Rechercherichtung

Beginne in Lib/multiprocessing/managers.py bei der SharedMemoryManager.ShareableList-Methode nahe dem Ende der Datei und vergleiche sie anschließend mit dem name-Parameter von shared_memory.ShareableList. Fertig ist die Änderung, wenn die Manager-Methode name akzeptiert und weiterleitet und dabei ihr Tracking- und Cleanup-Verhalten beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

stdlib type-feature

Feature or enhancement

I would like to pass a name for shared list from SharedMemoryManager but I apparently cannot do this.

with SharedMemoryManager() as smm:
    my_shared_list = smm.ShareableList(sequence=range(10),name="special name")
    pass

What I get:

my_shared_list = smm.ShareableList(sequence=range(10),name="special name")
TypeError: SharedMemoryManager.ShareableList() got an unexpected keyword argument 'name'

Possible solution

Just change method ShareableList in the bottom of this source file to following:

        def ShareableList(self, sequence, name=None):
            """Returns a new ShareableList instance populated with the values
            from the input sequence, to be tracked by the manager."""
            with self._Client(self._address, authkey=self._authkey) as conn:
                sl = shared_memory.ShareableList(sequence=sequence,name=name)
                try:
                    dispatch(conn, None, 'track_segment', (sl.shm.name,))
                except BaseException as e:
                    sl.shm.unlink()
                    raise e
            return sl

I wonder

Why this feature is not implemented from the very beggining?

Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
558

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/cpython

Alle Issues in python/cpython

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.