관리-도구
편집 파일: parallel.cpython-36.pyc
3 �ReL � @ s& d Z ddgZddlmZ ddlmZ ddlmZ ddl m Z ddlmZ ddl mZ dd lmZ er�dd lmZmZmZmZmZ ddlmZ eejejf Zed�Zed �ZyddlZW n ek r� dZY nX dZdZedd� �Zddd�Zddd�Z ddd�Z!e�se�re Z"Z#ne Z"e!Z#dS )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_multiprocess�map_multithread� )�contextmanager)�Pool)�DEFAULT_POOLSIZE)�PY2)�map)�MYPY_CHECK_RUNNING)�Callable�Iterable�Iterator�Union�TypeVar)�pool�S�TNTFi�� c c s* z | V W d| j � | j� | j� X dS )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�closing4 s r � c C s 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� chunksizer r r � _map_fallbackB s r c C s$ t t� ��}|j| ||�S Q R X dS )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)r r r r r r r �_map_multiprocessM s r c C s&