idZddlmZddlmZddlmZddlmZ ddl m Z dd giZ d d gZ edd ZdZdZdZdS)z, Thin wrappers around `concurrent.futures`. )contextmanager) length_hint) cpu_count)tqdm) TqdmWarningz github.com/ casperdcl thread_map process_mapc#Kt|dd}|p|}t|||}|||V||`dS||dS)z>get (create if necessary) and then restore `tqdm_class`'s lock_lockN)getattrget_lockset_lockr) tqdm_class lock_nameold_locklocks EC:\PYTHON\_runtimes\venv\Lib\site-packages\tqdm/contrib/concurrent.py ensure_lockrsz7D11H  ,z**,,D 4D ) )D JJJ    H%%%%%c j|}d|vrt|d|d<|dt}|dt dt dz}|dd}|d d }t || 5} |||j| f 5} t|| j |g|Rd|ifi|cd d d cd d d S#1swxYwY d d d d S#1swxYwYd S)a Implementation of `thread_map` and `process_map`. Parameters ---------- tqdm_class : [default: tqdm.auto.tqdm]. max_workers : [default: min(32, cpu_count() + 4)]. chunksize : [default: 1]. lock_name : [default: "":str]. totalrr max_workers  chunksizerr )r)r initializerinitargsN) copyrpop tqdm_autominrrrlistmap) PoolExecutorfn iterables tqdm_kwargskwargsrrrrlkexs r _executor_mapr/s    Ff%il33wL)44J**]CIKK!O,D,DEEK ;**I ;++I Z9 5 5 5[ \kz?R$&5*** [-/ 626"#Ny#N#N#NI#N#NYYRXYYZZ [ [ [ [ [ [ [[[[[[[[[ [ [ [ [ [ [ [ [ [[[[[[[[[[[[[[[[[[[s6<D(%D6 D(D D(D D((D,/D,c0ddlm}t||g|Ri|S)a Equivalent of `list(map(fn, *iterables))` driven by `concurrent.futures.ThreadPoolExecutor`. Parameters ---------- tqdm_class : optional `tqdm` class to use for bars [default: tqdm.auto.tqdm]. max_workers : int, optional Maximum number of workers to spawn; passed to `concurrent.futures.ThreadPoolExecutor.__init__`. [default: max(32, cpu_count() + 4)]. r)ThreadPoolExecutor)concurrent.futuresr1r/)r)r*r+r1s rr r 6s7655555 +R K) K K K{ K KKrcddlm}|rHd|vrDttt|}|dkrddlm}|d|ztdd |vr|}d |d <t||g|Ri|S) a Equivalent of `list(map(fn, *iterables))` driven by `concurrent.futures.ProcessPoolExecutor`. Parameters ---------- tqdm_class : optional `tqdm` class to use for bars [default: tqdm.auto.tqdm]. max_workers : int, optional Maximum number of workers to spawn; passed to `concurrent.futures.ProcessPoolExecutor.__init__`. [default: min(32, cpu_count() + 4)]. chunksize : int, optional Size of chunks sent to worker processes; passed to `concurrent.futures.ProcessPoolExecutor.map`. [default: 1]. lock_name : str, optional Member of `tqdm_class.get_lock()` to use [default: mp_lock]. r)ProcessPoolExecutorri)warnzIterable length %d > 1000 but `chunksize` is not set. This may seriously degrade multiprocess performance. Set `chunksize=1` or more.r) stacklevelrmp_lock) r2r4maxr'rwarningsr5rr"r/)r)r*r+r4longest_iterable_lenr5s rr r Hs&766666 ,[ 33 #3{I#>#>?? $ & & % % % % % % D/1EF , , , ,+%%!&&(( #, K ,b L9 L L L L LLrN)r )__doc__ contextlibroperatorrosrautorr$stdr __author____all__rr/r r rrrDs&%%%%% $$$$$$k] +  ' & & & &[[[2LLL$!M!M!M!M!Mr