'Overriding this method in order to:
* Name the pool worker threads
* Name the threads used for managing the Pool internals'

def __init__(self, processes=None, initializer=None, initargs=(), worker_names=None, maxtasksperchild=None, max_queued_tasks=0):

    self.Process = partial(DaemonProcess, name=worker_names)
    self._setup_queues(max_queued_tasks)
    self._taskqueue = Queue.Queue()
    self._cache = {}
    self._state = RUN
    self._maxtasksperchild = maxtasksperchild
    self._initializer = initializer
    self._initargs = initargs
    if (processes is None):
        try:
            processes = cpu_count()
        except NotImplementedError:
            processes = 1
    if (processes < 1):
        raise ValueError('Number    of    processes    must    be    at    least    1')
    if ((initializer is not None) and (not hasattr(initializer, '__call__'))):
        raise TypeError('initializer    must    be    a    callable')
    self._processes = processes
    self._pool = []
    self._repopulate_pool()
    self._worker_handler = threading.Thread(target=Pool._handle_workers, args=(self,), name='PoolWorkerHandler')
    self._worker_handler.daemon = True
    self._worker_handler._state = RUN
    self._worker_handler.start()
    self._task_handler = threading.Thread(target=Pool._handle_tasks, args=(self._taskqueue, self._quick_put, self._outqueue, self._pool, self._cache), name='PoolTaskHandler')
    self._task_handler.daemon = True
    self._task_handler._state = RUN
    self._task_handler.start()
    self._result_handler = threading.Thread(target=Pool._handle_results, args=(self._outqueue, self._quick_get, self._cache), name='PoolResultHandler')
    self._result_handler.daemon = True
    self._result_handler._state = RUN
    self._result_handler.start()
    self._terminate = Finalize(self, self._terminate_pool, args=(self._taskqueue, self._inqueue, self._outqueue, self._pool, self._worker_handler, self._task_handler, self._result_handler, self._cache), exitpriority=15)
