3 ”ReL ã @s&dZddgZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZer¬dd lmZmZmZmZmZdd lmZeejejfZed ƒZed ƒZy ddlZWnek rÐdZYnXdZdZedd„ƒZddd„Zddd„Z ddd„Z!e�se �reZ"Z#ne Z"e!Z#dS)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_multiprocessÚmap_multithreadé)Úcontextmanager)ÚPool)ÚDEFAULT_POOLSIZE)ÚPY2)Úmap)ÚMYPY_CHECK_RUNNING)ÚCallableÚIterableÚIteratorÚUnionÚTypeVar)ÚpoolÚSÚTNTFi€„c cs*z |VWd|jƒ|jƒ|jƒXdS)z>Return a context manager making sure the pool closes properly.N)ÚcloseÚjoinÚ terminate)r©rú‹/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/utils/parallel.pyÚclosing4s  récCs t||ƒS)zÞMake 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. )r)ÚfuncÚiterableÚ chunksizerrrÚ _map_fallbackBsrc Cs$ttƒƒ�}|j|||ƒSQRXdS)zÿChop 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Ú ProcessPoolÚimap_unordered)rrrrrrrÚ_map_multiprocessMs rc Cs&tttƒƒ�}|j|||ƒSQRXdS)zþChop 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Ú ThreadPoolrr)rrrrrrrÚ_map_multithreadZs r!)r)r)r)$Ú__doc__Ú__all__Ú contextlibrÚmultiprocessingrrZmultiprocessing.dummyr Zpip._vendor.requests.adaptersrZpip._vendor.sixrÚpip._vendor.six.movesrÚpip._internal.utils.typingr Útypingr r r r rrrrZmultiprocessing.synchronizeÚ ImportErrorZ LACK_SEM_OPENÚTIMEOUTrrrr!rrrrrrÚs8