o ai| @ sv d Z ddgZddlmZ ddlmZ ddlmZ ddlmZ ddl mZmZm Z mZmZ ddlmZ eejej f Zed Zed ZzddlZW n eyS dZY nw d ZdZedede e fddZ ddeegef dee dede e fddZ ddeegef dee dede e fddZ ddeegef dee dede e fddZere ZZdS eZeZdS )ab Convenient 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 r returnc c sB z| V W | | | dS | | | w )z>Return a context manager making sure the pool closes properly.N)closejoin terminater r /builddir/build/BUILDROOT/alt-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/utils/parallel.pyclosing. s r funciterable chunksizec C s 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)r r r r r r _map_fallback; s r c C s<