Skip to content

Modify the __repr__ method of multiprocessing.[Barrier|Event] to be consistent with the other synchronization primitives. #149399

@YvesDup

Description

@YvesDup

Bug report

Bug description:

import multiprocessing

def repr_all_multiprocessing():
    print(f'{multiprocessing.Lock() = }')
    print(f'{multiprocessing.RLock() = }')
    print(f'{multiprocessing.Semaphore(10) = }')
    print(f'{multiprocessing.BoundedSemaphore(3) = }')
    print(f'{multiprocessing.Condition() = }')
    print('')
    print(f'{multiprocessing.Event() = }')
    print(f'{multiprocessing.Barrier(5) = }')

repr_all_multiprocessing()

print this:

multiprocessing.Lock() = <Lock(owner=None)>
multiprocessing.RLock() = <RLock(None, 0)>
multiprocessing.Semaphore(10) = <Semaphore(value=10)>
multiprocessing.BoundedSemaphore(3) = <BoundedSemaphore(value=3, maxvalue=3)>
multiprocessing.Condition() = <Condition(<RLock(None, 0)>, 0)>

multiprocessing.Event() = <Event at 0x100936f90 unset>
multiprocessing.Barrier(5) = <multiprocessing.synchronize.Barrier at 0x100936f90: waiters=0/5>

The Barrier and Event representations might be:

multiprocessing.Event() = <Event(unset)>
multiprocessing.Barrier(5) = <Barrier(waiters=0/5)>

FYI, the actual Barrier representation is inherited from threading.Barrier.

A PR is ready.

CPython versions tested on:

3.13, 3.14, 3.15, CPython main branch

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-multiprocessingtype-featureA feature request or enhancement

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions