grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i+ã@s`ddgZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z m Z ddlmZdZd Zd Zd Ze ¡Zd d „Zdd„ZGdd„deƒZGdd„dƒZdd„ZGdd„deƒZd*dd„Zdd„ZGdd„deƒZ Gd d„de!ƒZ"Gd!d"„d"e!ƒZ#e#Z$Gd#d$„d$e#ƒZ%Gd%d&„d&e!ƒZ&Gd'd(„d(e&ƒZ'Gd)d„de"ƒZ(dS)+ÚPoolÚ ThreadPooléNé)Úutil)Ú get_contextÚ TimeoutError)ÚwaitÚINITÚRUNÚCLOSEÚ TERMINATEcCs tt|ŽƒS©N)ÚlistÚmap©Úargs©rú,/usr/lib64/python3.9/multiprocessing/pool.pyÚmapstar/srcCstt |d|d¡ƒS)Nrr)rÚ itertoolsÚstarmaprrrrÚ starmapstar2src@seZdZdd„Zdd„ZdS)ÚRemoteTracebackcCs ||_dSr ©Útb)ÚselfrrrrÚ__init__:szRemoteTraceback.__init__cCs|jSr r©rrrrÚ__str__<szRemoteTraceback.__str__N)Ú__name__Ú __module__Ú __qualname__rrrrrrr9src@seZdZdd„Zdd„ZdS)ÚExceptionWithTracebackcCs0t t|ƒ||¡}d |¡}||_d||_dS)NÚz """ %s""")Ú tracebackÚformat_exceptionÚtypeÚjoinÚexcr)rr(rrrrr@s zExceptionWithTraceback.__init__cCst|j|jffSr )Ú rebuild_excr(rrrrrÚ __reduce__Esz!ExceptionWithTraceback.__reduce__N)rr r!rr*rrrrr"?sr"cCst|ƒ|_|Sr )rÚ __cause__)r(rrrrr)Hs r)cs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ÚMaybeEncodingErrorcs.t|ƒ|_t|ƒ|_tt|ƒ |j|j¡dSr )Úreprr(ÚvalueÚsuperr,r)rr(r.©Ú __class__rrrTs  zMaybeEncodingError.__init__cCsd|j|jfS)Nz(Error sending result: '%s'. Reason: '%s')r.r(rrrrrYsÿzMaybeEncodingError.__str__cCsd|jj|fS)Nz<%s: %s>)r1rrrrrÚ__repr__]szMaybeEncodingError.__repr__)rr r!rrr2Ú __classcell__rrr0rr,Ps r,rFc CsÒ|dur(t|tƒr|dks(td |¡ƒ‚|j}|j}t|dƒrR|j ¡|j  ¡|durb||Žd}|dus~|�rÀ||k�rÀz |ƒ} Wn&t t fy®t   d¡Y�qÀYn0| durÆt   d¡�qÀ| \} } } } }zd| | i|¤Žf}WnJt�y4}z0|�r| tu�rt||jƒ}d|f}WYd}~n d}~00z|| | |fƒWnTt�yœ}z:t||dƒ}t   d |¡|| | d|ffƒWYd}~n d}~00d} } }} } }|d7}qft   d |¡dS) NrzMaxtasks {!r} is not validÚ_writerrz)worker got EOFError or OSError -- exitingzworker got sentinel -- exitingTFz0Possible encoding error while sending result: %szworker exiting after %d tasks)Ú isinstanceÚintÚAssertionErrorÚformatÚputÚgetÚhasattrr4ÚcloseÚ_readerÚEOFErrorÚOSErrorrÚdebugÚ ExceptionÚ_helper_reraises_exceptionr"Ú __traceback__r,)ÚinqueueÚoutqueueÚ initializerÚinitargsZmaxtasksÚwrap_exceptionr9r:Z completedÚtaskÚjobÚiÚfuncrÚkwdsÚresultÚeÚwrappedrrrÚworkerasNÿ        ÿ( rQcCs|‚dSr r)ÚexrrrrBŽsrBcs.eZdZddœ‡fdd„ Z‡fdd„Z‡ZS)Ú _PoolCacheN©Únotifiercs||_tƒj|i|¤ŽdSr )rUr/r)rrUrrMr0rrr�sz_PoolCache.__init__cs tƒ |¡|s|j d¡dSr )r/Ú __delitem__rUr9)rÚitemr0rrrV¡s z_PoolCache.__delitem__)rr r!rrVr3rrr0rrS–srSc@s‚eZdZdZedd„ƒZdKdd„Zeje fdd „Z d d „Z d d „Z edd„ƒZ edd„ƒZdd„Zedd„ƒZedd„ƒZdd„Zdd„Zdifdd„ZdLdd„ZdMd d!„ZdNd"d#„Zd$d%„ZdOd'd(„ZdPd)d*„Zdiddfd+d,„ZdQd-d.„ZdRd/d0„ZedSd1d2„ƒZed3d4„ƒZ ed5d6„ƒZ!ed7d8„ƒZ"ed9d:„ƒZ#d;d<„Z$d=d>„Z%d?d@„Z&dAdB„Z'edCdD„ƒZ(edEdF„ƒZ)dGdH„Z*dIdJ„Z+dS)TrTcOs|j|i|¤ŽSr ©ÚProcess)ÚctxrrMrrrrY³sz Pool.ProcessNrcCsg|_t|_|ptƒ|_| ¡t ¡|_|j ¡|_ t |j d�|_ ||_ ||_ ||_|durjt ¡phd}|dkrztdƒ‚|dur’t|ƒs’tdƒ‚||_z | ¡WnFtyê|jD]}|jdur¸| ¡q¸|jD] }| ¡qÖ‚Yn0| ¡}tjtj|j |j|j|j|j|j|j |j!|j |j|j |j"||j fd�|_#d|j#_$t%|j#_|j# &¡tjtj'|j|j(|j!|j|j fd�|_)d|j)_$t%|j)_|j) &¡tjtj*|j!|j+|j fd�|_,d|j,_$t%|j,_|j, &¡t-j.||j/|j|j |j!|j|j |j#|j)|j,|j f dd�|_0t%|_dS) NrTrz&Number of processes must be at least 1zinitializer must be a callable©ÚtargetrTé)rÚ exitpriority)1Ú_poolr Ú_staterÚ_ctxÚ _setup_queuesÚqueueÚ SimpleQueueÚ _taskqueueÚ_change_notifierrSÚ_cacheÚ_maxtasksperchildÚ _initializerÚ _initargsÚosÚ cpu_countÚ ValueErrorÚcallableÚ TypeErrorÚ _processesÚ_repopulate_poolrAÚexitcodeÚ terminater'Ú_get_sentinelsÚ threadingÚThreadrÚ_handle_workersrYÚ_inqueueÚ _outqueueÚ_wrap_exceptionÚ_worker_handlerÚdaemonr ÚstartÚ _handle_tasksÚ _quick_putÚ _task_handlerÚ_handle_resultsÚ _quick_getÚ_result_handlerrÚFinalizeÚ_terminate_poolÚ _terminate)rÚ processesrFrGÚmaxtasksperchildÚcontextÚpÚ sentinelsrrrr·s~             ýþ  ÿþ þ  þûz Pool.__init__cCs>|j|kr:|d|›�t|d�t|ddƒdur:|j d¡dS)Nz&unclosed running multiprocessing pool )Úsourcerf)r`ÚResourceWarningÚgetattrrfr9)rÚ_warnr rrrÚ__del__s   ÿz Pool.__del__c Cs0|j}d|j›d|j›d|j›dt|jƒ›d� S)Nú<Ú.z state=z pool_size=ú>)r1r r!r`Úlenr_)rÚclsrrrr2s ÿþz Pool.__repr__cCs |jjg}|jjg}g|¢|¢Sr )ryr=rf)rZtask_queue_sentinelsZself_notifier_sentinelsrrrrts  zPool._get_sentinelscCsdd„|DƒS)NcSsg|]}t|dƒr|j‘qS)Úsentinel)r;r–)Ú.0rQrrrÚ s ÿz.Pool._get_worker_sentinels..r©ÚworkersrrrÚ_get_worker_sentinelssÿzPool._get_worker_sentinelscCsPd}ttt|ƒƒƒD]6}||}|jdurt d|¡| ¡d}||=q|S)NFúcleaning up worker %dT)ÚreversedÚranger”rrrr@r')ÚpoolZcleanedrKrQrrrÚ_join_exited_workerss zPool._join_exited_workersc Cs0| |j|j|j|j|j|j|j|j|j |j ¡ Sr ) Ú_repopulate_pool_staticrarYrpr_rxryrirjrhrzrrrrrq.s úzPool._repopulate_poolc Csft|t|ƒƒD]P} ||t|||||| fd�} | j dd¡| _d| _|  ¡| | ¡t  d¡qdS)Nr[rYZ PoolWorkerTz added worker) ržr”rQÚnameÚreplacer|r}Úappendrr@) rZrYr‡rŸrDrErFrGrˆrHrKÚwrrrr¡7sýÿ zPool._repopulate_pool_staticc Cs*t |¡r&t |||||||||| ¡ dSr )rr r¡) rZrYr‡rŸrDrErFrGrˆrHrrrÚ_maintain_poolJs   ýzPool._maintain_poolcCs4|j ¡|_|j ¡|_|jjj|_|jjj|_ dSr ) rardrxryr4Úsendrr=Úrecvr‚rrrrrbVs   zPool._setup_queuescCs|jtkrtdƒ‚dS)NzPool not running)r`r rmrrrrÚ_check_running\s zPool._check_runningcCs| |||¡ ¡Sr )Ú apply_asyncr:)rrLrrMrrrÚapply`sz Pool.applycCs| ||t|¡ ¡Sr )Ú _map_asyncrr:©rrLÚiterableÚ chunksizerrrrgszPool.mapcCs| ||t|¡ ¡Sr )r¬rr:r­rrrrnsz Pool.starmapcCs| ||t|||¡Sr )r¬r©rrLr®r¯ÚcallbackÚerror_callbackrrrÚ starmap_asyncvs ÿzPool.starmap_asyncc cslz,d}t|ƒD]\}}||||fifVqWn:tyf}z"||dt|fifVWYd}~n d}~00dS)Néÿÿÿÿr)Ú enumeraterArB)rZ result_jobrLr®rKÚxrOrrrÚ_guarded_task_generation~s zPool._guarded_task_generationrcCs–| ¡|dkr:t|ƒ}|j | |j||¡|jf¡|S|dkrPtd |¡ƒ‚t   |||¡}t|ƒ}|j | |jt |¡|jf¡dd„|DƒSdS)NrzChunksize must be 1+, not {0:n}css|]}|D] }|Vq qdSr r©r—ÚchunkrWrrrÚ ¤ózPool.imap..) r©Ú IMapIteratorrer9r·Ú_jobÚ _set_lengthrmr8rÚ _get_tasksr©rrLr®r¯rNÚ task_batchesrrrÚimap‰s4þÿÿÿþüÿz Pool.imapcCs–| ¡|dkr:t|ƒ}|j | |j||¡|jf¡|S|dkrPtd |¡ƒ‚t   |||¡}t|ƒ}|j | |jt |¡|jf¡dd„|DƒSdS)NrzChunksize must be 1+, not {0!r}css|]}|D] }|Vq qdSr rr¸rrrrºÀr»z&Pool.imap_unordered..) r©ÚIMapUnorderedIteratorrer9r·r½r¾rmr8rr¿rrÀrrrÚimap_unordered¦s0þÿÿþüÿzPool.imap_unorderedcCs6| ¡t|||ƒ}|j |jd|||fgdf¡|S©Nr)r©Ú ApplyResultrer9r½)rrLrrMr±r²rNrrrrªÂs zPool.apply_asynccCs| ||t|||¡Sr )r¬rr°rrrÚ map_asyncÌsÿzPool.map_asyncc Csž| ¡t|dƒst|ƒ}|durJtt|ƒt|jƒdƒ\}}|rJ|d7}t|ƒdkrZd}t |||¡}t||t|ƒ||d�} |j   |  | j ||¡df¡| S)NÚ__len__érr©r²) r©r;rÚdivmodr”r_rr¿Ú MapResultrer9r·r½) rrLr®Zmapperr¯r±r²ÚextrarÁrNrrrr¬Ôs,  ÿþüÿzPool._map_asynccCs"t||d�| ¡s| ¡q dS)N)Útimeout)rÚemptyr:)r‹Úchange_notifierrÎrrrÚ_wait_for_updatesñs zPool._wait_for_updatesc Cstt ¡}|jtks |r\|jtkr\| ||||||| | | | ¡ g| |¡¢| ¢}| ||¡q| d¡t   d¡dS)Nzworker handler exiting) ruÚcurrent_threadr`r r r¦r›rÑr9rr@)r•ÚcacheÚ taskqueuerZrYr‡rŸrDrErFrGrˆrHr‹rÐÚthreadZcurrent_sentinelsrrrrw÷sþ zPool._handle_workersc Cs�t ¡}t|jdƒD�] \}}d}zî|D]Š}|jtkrDt d¡qîz ||ƒWq(ty°} zH|dd…\} } z||   | d| f¡Wnt yšYn0WYd} ~ q(d} ~ 00q(|rÞt d¡|rÎ|dnd} || dƒWd}}} qWd}}} �q,Wd}}} qd}}} 0qt d¡z6t d¡|  d¡t d ¡|D]} |dƒ�qPWnt �y€t d ¡Yn0t d ¡dS) Nz'task handler found thread._state != RUNéFzdoing set_length()rr´ztask handler got sentinelz/task handler sending sentinel to result handlerz(task handler sending sentinel to workersz/task handler got OSError when sending sentinelsztask handler exiting) rurÒÚiterr:r`r rr@rAÚ_setÚKeyErrorr9r?) rÔr9rErŸrÓrÕZtaskseqZ set_lengthrIrOrJÚidxrŠrrrr~ sJ       ý þ    zPool._handle_tasksc Csªt ¡}z |ƒ}Wn"ttfy4t d¡YdS0|jtkrLt d¡q |dur`t d¡q |\}}}z|| ||¡Wnt y�Yn0d}}}q|�r6|jt k�r6z |ƒ}Wn"ttfyÞt d¡YdS0|durôt d¡q |\}}}z|| ||¡Wnt �y&Yn0d}}}q t |dƒ�r’t d¡z,t dƒD]}|j  ¡�sl�qv|ƒ�qVWnttf�y�Yn0t dt|ƒ|j¡dS) Nz.result handler got EOFError/OSError -- exitingz,result handler found thread._state=TERMINATEzresult handler got sentinelz&result handler ignoring extra sentinelr=z"ensuring that outqueue is not fullé z7result handler exiting: len(cache)=%s, thread._state=%s)rurÒr?r>rr@r`r rØrÙr r;ržr=Úpollr”)rEr:rÓrÕrIrJrKÚobjrrrr�:sZ                ÿzPool._handle_resultsccs0t|ƒ}tt ||¡ƒ}|s dS||fVqdSr )r×ÚtuplerÚislice)rLÚitÚsizer¶rrrr¿vs zPool._get_taskscCs tdƒ‚dS)Nz:pool objects cannot be passed between processes or pickled)ÚNotImplementedErrorrrrrr*sÿzPool.__reduce__cCs2t d¡|jtkr.t|_t|j_|j d¡dS)Nz closing pool)rr@r`r r r{rfr9rrrrr<„s   z Pool.closecCst d¡t|_| ¡dS)Nzterminating pool)rr@r r`r†rrrrrs‹s zPool.terminatecCsjt d¡|jtkrtdƒ‚n|jttfvr4tdƒ‚|j ¡|j  ¡|j  ¡|j D] }| ¡qXdS)Nz joining poolzPool is still runningzIn unknown state) rr@r`r rmr r r{r'r€rƒr_)rrŠrrrr'�s       z Pool.joincCs@t d¡|j ¡| ¡r<|j ¡r<|j ¡t  d¡qdS)Nz7removing tasks from inqueue until task handler finishedr) rr@Ú_rlockÚacquireÚis_aliver=rÜr¨ÚtimeÚsleep)rDÚ task_handlerrárrrÚ_help_stuff_finishœs    zPool._help_stuff_finishc CsXt d¡t|_| d¡t|_t d¡| ||t|ƒ¡| ¡sXt| ƒdkrXtdƒ‚t|_| d¡| d¡t d¡t   ¡|ur�|  ¡|rÈt |ddƒrÈt d¡|D]} | j dur°|  ¡q°t d¡t   ¡|uræ|  ¡t d ¡t   ¡|u�r|  ¡|�rTt |ddƒ�rTt d ¡|D](} |  ¡�r*t d | j¡|   ¡�q*dS) Nzfinalizing poolz&helping task handler/workers to finishrz.Cannot have cache with result_hander not alivezjoining worker handlerrszterminating workerszjoining task handlerzjoining result handlerzjoining pool workersrœ)rr@r r`r9rér”rår7rurÒr'r;rrrsÚpid) r•rÔrDrErŸrÐZworker_handlerrèZresult_handlerrÓrŠrrrr…¥sB   ÿ            zPool._terminate_poolcCs | ¡|Sr )r©rrrrÚ __enter__ÛszPool.__enter__cCs | ¡dSr )rs)rÚexc_typeÚexc_valÚexc_tbrrrÚ__exit__ßsz Pool.__exit__)NNrNN)N)N)NNN)r)r)NNN)NNN)N),rr r!rzÚ staticmethodrYrÚwarningsÚwarnr r�r2rtr›r rqr¡r¦rbr©r«rrr³r·rÂrÄrªrÇr¬rÑÚ classmethodrwr~r�r¿r*r<rsr'rér…rërïrrrrr­st ÿ P       ÿ   ÿ ÿ ÿ    - ;    5c@sJeZdZdd„Zdd„Zdd„Zddd „Zdd d „Zd d „Ze e j ƒZ dS)rÆcCs>||_t ¡|_ttƒ|_|j|_||_||_ ||j|j<dSr ) r_ruÚEventÚ_eventÚnextÚ job_counterr½rgÚ _callbackÚ_error_callback)rrŸr±r²rrrrès  zApplyResult.__init__cCs |j ¡Sr )rõÚis_setrrrrÚreadyñszApplyResult.readycCs| ¡std |¡ƒ‚|jS)Nz{0!r} not ready)rûrmr8Ú_successrrrrÚ successfulôszApplyResult.successfulNcCs|j |¡dSr )rõr©rrÎrrrrùszApplyResult.waitcCs,| |¡| ¡st‚|jr"|jS|j‚dSr )rrûrrüÚ_valuerþrrrr:üs  zApplyResult.getcCsZ|\|_|_|jr$|jr$| |j¡|jr<|js<| |j¡|j ¡|j|j=d|_dSr ) rürÿrørùrõÚsetrgr½r_©rrKrÝrrrrØs       zApplyResult._set)N)N) rr r!rrûrýrr:rØróÚtypesÚ GenericAliasÚ__class_getitem__rrrrrÆæs    rÆc@seZdZdd„Zdd„ZdS)rÌcCshtj||||d�d|_dg||_||_|dkrNd|_|j ¡|j|j =n||t ||ƒ|_dS)NrÊTr) rÆrrürÿÚ _chunksizeÚ _number_leftrõrrgr½Úbool)rrŸr¯Úlengthr±r²rrrrs ÿ   zMapResult.__init__cCsÆ|jd8_|\}}|rv|jrv||j||j|d|j…<|jdkrÂ|jrZ| |j¡|j|j=|j ¡d|_ nL|sŒ|jrŒd|_||_|jdkrÂ|j r¨|  |j¡|j|j=|j ¡d|_ dS)NrrF) rrürÿrrørgr½rõrr_rù)rrKZsuccess_resultÚsuccessrNrrrrØ&s&          zMapResult._setN)rr r!rrØrrrrrÌs rÌc@s:eZdZdd„Zdd„Zd dd„ZeZdd „Zd d „ZdS) r¼cCsT||_t t ¡¡|_ttƒ|_|j|_t   ¡|_ d|_ d|_ i|_||j|j<dSrÅ)r_ruÚ ConditionÚLockÚ_condrör÷r½rgÚ collectionsÚdequeÚ_itemsÚ_indexÚ_lengthÚ _unsorted)rrŸrrrrDs  zIMapIterator.__init__cCs|Sr rrrrrÚ__iter__OszIMapIterator.__iter__Nc CsÄ|j�–z|j ¡}WnvtyŒ|j|jkr sN   ÿ -=++E