Skip to content

Commit

Permalink
Add multiprocessing.Pool.__repr__() (GH-11137)
Browse files Browse the repository at this point in the history
* Add multiprocessing.Pool.__repr__() to ease debug
* RUN, CLOSE and TERMINATE constants values are now strings rather
  than integer to ease debug
  • Loading branch information
vstinner committed Dec 14, 2018
1 parent afb3e71 commit 2b417fb
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions Lib/multiprocessing/pool.py
Expand Up @@ -30,9 +30,9 @@
# Constants representing the state of a pool
#

RUN = 0
CLOSE = 1
TERMINATE = 2
RUN = "RUN"
CLOSE = "CLOSE"
TERMINATE = "TERMINATE"

#
# Miscellaneous
Expand Down Expand Up @@ -217,6 +217,12 @@ def __init__(self, processes=None, initializer=None, initargs=(),
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.
Expand Down Expand Up @@ -432,7 +438,7 @@ def _handle_tasks(taskqueue, put, outqueue, pool, cache):
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:
Expand Down Expand Up @@ -480,7 +486,7 @@ def _handle_results(outqueue, get, cache):
util.debug('result handler got EOFError/OSError -- exiting')
return

if thread._state:
if thread._state != "RUN":

This comment has been minimized.

Copy link
@ulfalizer

ulfalizer Dec 14, 2018

Was this meant to be RUN, like above?

assert thread._state == TERMINATE, "Thread not in TERMINATE"
util.debug('result handler found thread._state=TERMINATE')
break
Expand Down

0 comments on commit 2b417fb

Please sign in to comment.