Commit 2b417fba authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

Add multiprocessing.Pool.__repr__() (GH-11137)

* Add multiprocessing.Pool.__repr__() to ease debug
* RUN, CLOSE and TERMINATE constants values are now strings rather
  than integer to ease debug
parent afb3e71a
......@@ -30,9 +30,9 @@ from . import get_context, TimeoutError
# Constants representing the state of a pool
#
RUN = 0
CLOSE = 1
TERMINATE = 2
RUN = "RUN"
CLOSE = "CLOSE"
TERMINATE = "TERMINATE"
#
# Miscellaneous
......@@ -217,6 +217,12 @@ class Pool(object):
exitpriority=15
)
def __repr__(self):
cls = self.__class__
return (f'<{cls.__module__}.{cls.__qualname__} '
f'state={self._state} '
f'pool_size={len(self._pool)}>')
def _join_exited_workers(self):
"""Cleanup after any worker processes which have exited due to reaching
their specified lifetime. Returns True if any workers were cleaned up.
......@@ -432,7 +438,7 @@ class Pool(object):
try:
# iterating taskseq cannot fail
for task in taskseq:
if thread._state:
if thread._state != RUN:
util.debug('task handler found thread._state != RUN')
break
try:
......@@ -480,7 +486,7 @@ class Pool(object):
util.debug('result handler got EOFError/OSError -- exiting')
return
if thread._state:
if thread._state != "RUN":
assert thread._state == TERMINATE, "Thread not in TERMINATE"
util.debug('result handler found thread._state=TERMINATE')
break
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment