python / python/cpython

Improve `__repr__` string of synchronize tools in the `multiprocessing` module.

Offen
#155,092 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib topic-multiprocessing type-feature
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Feature or enhancement

Proposal:

To be consistant with representation string of threading sychronize tools and in accordance with the discussion from the #149447 PR , the missing id information must be added in the __repr__ of the following synchronization classes:

  • Lock, Rlock,
  • Semaphore, BoundedSemaphore,
  • Condition.

and refactoring must be performed to these 2 classes:

  • Event,
  • Barrier.

See some examples below:

import threading
import multiprocessing

print(threading.Semaphore(3))
print(multiprocessing.Semaphore(3))

print(threading.Lock())
print(multiprocessing.Lock())

print(threading.Event())
print(multiprocessing.Event())

print(threading.Barrier(2))
print(multiprocessing.Barrier(2))

The ouput is:

<threading.Semaphore at 0x10378c8a0: value=3>
<Semaphore(value=3)>
<unlocked _thread.lock object at 0x103612040>
<Lock(owner=None)>
<threading.Event at 0x10378ccc0: unset>
<Event at 0x10378ccc0 unset>
<threading.Barrier at 0x10378ccc0: waiters=0/2>
<multiprocessing.synchronize.Barrier at 0x10378ccc0: waiters=0/2>

A PR will be published soon.

cc @gpshead

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

#149447

Linked PRs
  • gh-155593

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne im multiprocessing-Modul mit den Klassen Lock, Rlock, Semaphore, BoundedSemaphore, Condition, Event und Barrier und vergleiche deren Repräsentationen mit threading und der Diskussion in #149447. Als abgeschlossen gilt die Arbeit, wenn die angeforderten ID-Informationen für die aufgelisteten Synchronisationswerkzeuge enthalten sind und Event und Barrier das vorgeschlagene Refactoring erhalten; beachte, dass PR #155593 bereits im Issue verlinkt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
operating-systems
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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