a Re| @s\dZddgZddlmZddlmZddlmZddlmZ ddl m Z m Z m Z mZmZddlmZeejej fZed Zed Zz dd lZWneyd ZYn0d ZdZeee edddZde egefe eee edddZde egefe eee edddZde egefe eee edddZerPeZZneZeZd S)abConvenient parallelization of higher order functions. This module provides two helper functions, with appropriate fallbacks on Python 2 and on systems lacking support for synchronization mechanisms: - map_multiprocess - map_multithread These helpers work like Python 3's map, with two differences: - They don't guarantee the order of processing of the elements of the iterable. - The underlying process/thread pools chop the iterable into a number of chunks, so that for very long iterables using a large value for chunksize can make the job complete much faster than using the default value of 1. map_multiprocessmap_multithread)contextmanager)Poolpool)CallableIterableIteratorTypeVarUnion)DEFAULT_POOLSIZESTNTFi)rreturnccsBz"|VW|||n|||0dS)z>Return a context manager making sure the pool closes properly.N)closejoin terminaterr/builddir/build/BUILDROOT/alt-python39-pip-21.3.1-2.el8.x86_64/opt/alt/python39/lib/python3.9/site-packages/pip/_internal/utils/parallel.pyclosing.s r)funciterable chunksizercCs t||S)zMake an iterator applying func to each element in iterable. This function is the sequential fallback either on Python 2 where Pool.imap* doesn't react to KeyboardInterrupt or when sem_open is unavailable. )map)rrrrrr _map_fallback;s rcCs<tt}||||WdS1s.0YdS)zChop iterable into chunks and submit them to a process pool. For very long iterables using a large value for chunksize can make the job complete much faster than using the default value of 1. Return an unordered iterator of the results. N)r ProcessPoolimap_unorderedrrrrrrr_map_multiprocessGs r cCs>ttt}||||WdS1s00YdS)zChop iterable into chunks and submit them to a thread pool. For very long iterables using a large value for chunksize can make the job complete much faster than using the default value of 1. Return an unordered iterator of the results. N)r ThreadPoolr rrrrr_map_multithreadUs r")r)r)r)__doc____all__ contextlibrmultiprocessingrrrZmultiprocessing.dummyr!typingrr r r r Zpip._vendor.requests.adaptersr rrZmultiprocessing.synchronize ImportErrorZ LACK_SEM_OPENTIMEOUTrintrr r"rrrrrrsJ