grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´ij-ã@sÒddlZddlmZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z dgZ ejdkr‚ddlZGdd „d eƒZn,Gd d „d eƒZd d „Zd d„Ze  ee¡Gdd„deƒZGdd„deƒZdS)éN)Ú defaultdicté)Ú reductionÚassert_spawning)ÚutilÚ BufferWrapperÚwin32c@s,eZdZe ¡Zdd„Zdd„Zdd„ZdS)ÚArenacCsx||_tdƒD]B}dt ¡t|jƒf}tjd||d�}t ¡dkrHqZ|  ¡qt dƒ‚||_ ||_ |j|j f|_ dS)Nédz pym-%d-%séÿÿÿÿ©ZtagnamerzCannot find name for new mmap)ÚsizeÚrangeÚosÚgetpidÚnextÚ_randÚmmapÚ_winapiZ GetLastErrorÚcloseÚFileExistsErrorÚnameÚbufferÚ_state)Úselfr ÚirÚbuf©rú,/usr/lib64/python3.9/multiprocessing/heap.pyÚ__init__&s   úArena.__init__cCst|ƒ|jS©N)rr)rrrrÚ __getstate__5szArena.__getstate__cCs,|\|_|_|_tjd|j|jd�|_dS)Nr r )r rrrr)rÚstaterrrÚ __setstate__9szArena.__setstate__N) Ú__name__Ú __module__Ú __qualname__ÚtempfileÚ_RandomNameSequencerrr"r$rrrrr sr c@s4eZdZejdkrdgZngZd dd„Zdd„ZdS) r Úlinuxz/dev/shmr cCsx||_||_|dkrbtjdt ¡| |¡d�\|_}t |¡t  |tj |jf¡t  |j|¡t   |j|j¡|_ dS)Nr zpym-%d-)ÚprefixÚdir)r Úfdr(ÚmkstemprrÚ _choose_dirÚunlinkrÚFinalizerÚ ftruncaterr)rr r-rrrrrMs þ  r cCs6|jD]&}t |¡}|j|j|kr|Sqt ¡Sr!)Ú_dir_candidatesrÚstatvfsÚf_bavailÚf_frsizerÚ get_temp_dir)rr ÚdÚstrrrr/[s    zArena._choose_dirN)r )r%r&r'ÚsysÚplatformr3rr/rrrrr Cs   cCs(|jdkrtdƒ‚t|jt |j¡ffS)Nr zDArena is unpicklable because forking was enabled when it was created)r-Ú ValueErrorÚ rebuild_arenar rÚDupFd)ÚarrrÚ reduce_arenads r@cCst|| ¡ƒSr!)r Údetach)r Zdupfdrrrr=jsr=c@szeZdZdZdZdZejfdd„Ze dd„ƒZ dd„Z d d „Z d d „Z d d„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS)ÚHeapéi@cCsXt ¡|_t ¡|_||_g|_i|_i|_ i|_ t t ƒ|_ g|_g|_d|_d|_dS©Nr)rrÚ_lastpidÚ threadingÚLockÚ_lockÚ_sizeÚ_lengthsÚ _len_to_seqÚ_start_to_blockÚ_stop_to_blockrÚsetÚ_allocated_blocksÚ_arenasÚ_pending_free_blocksÚ _n_mallocsÚ_n_frees)rr rrrr{s   z Heap.__init__cCs|d}|||@S)Nrr)ÚnZ alignmentÚmaskrrrÚ_roundup˜sz Heap._roundupcCsZ| t|j|ƒtj¡}|j|jkr0|jd9_t d|¡t|ƒ}|j   |¡|d|fS)Néz"allocating a new mmap of length %dr) rVÚmaxrIrÚPAGESIZEÚ_DOUBLE_ARENA_SIZE_UNTILrÚinfor rPÚappend)rr ÚlengthÚarenarrrÚ _new_arenažs   zHeap._new_arenacCsz|j}||jkrdS|j |¡}|j|df=|j||f=|j |¡|j|}| |d|f¡|sv|j|=|j  |¡dSrD) r Ú_DISCARD_FREE_SPACE_LARGER_THANrOÚpoprLrMrPÚremoverKrJ)rr^r]ÚblocksÚseqrrrÚ_discard_arenaªs      zHeap._discard_arenac Cs|t |j|¡}|t|jƒkr&| |¡S|j|}|j|}| ¡}|sV|j|=|j|=|\}}}|j||f=|j||f=|Sr!) ÚbisectÚ bisect_leftrJÚlenr_rKrarLrM) rr rr]rdÚblockr^ÚstartÚstoprrrÚ_malloc¼s      z Heap._mallocc Csæ|\}}}z|j||f}Wnty.Yn0| |¡\}}z|j||f}WntybYn0| |¡\}}|||f}||}z|j| |¡Wn,tyÄ|g|j|<t |j|¡Yn0||j||f<||j||f<dSr!) rMÚKeyErrorÚ_absorbrLrKr\rfÚinsortrJ) rrir^rjrkZ prev_blockÚ_Z next_blockr]rrrÚ_add_free_blockÍs(      zHeap._add_free_blockcCs^|\}}}|j||f=|j||f=||}|j|}| |¡|sV|j|=|j |¡||fSr!)rLrMrKrbrJ)rrir^rjrkr]rdrrrrnës      z Heap._absorbcCs4|\}}}|j|}| ||f¡|s0| |¡dSr!)rOrbre)rrir^rjrkrcrrrÚ_remove_allocated_blockús   zHeap._remove_allocated_blockcCs@z|j ¡}Wnty$Yq|j |¡nFz8|j d7_ |  ¡|  |¡|  |¡W|j  ¡n |j  ¡0dS)Nz$My pid ({0:n}) is not last pid {1:n}Fr)rrrEr<ÚformatrHÚacquirerQr\rSrurqrrÚreleasertrrrÚfree s  ÿÿ   z Heap.freecCsæ|dkrtd |¡ƒ‚tj|kr.td |¡ƒ‚t ¡|jkrD| ¡|j �ˆ|j d7_ |  ¡|  t |dƒ|j¡}| |¡\}}}||}||kr¦| |||f¡|j| ||f¡|||fWdƒS1sØ0YdS)NrúSize {0:n} out of rangeúSize {0:n} too larger)r<rvr:ÚmaxsizeÚ OverflowErrorrrrErrHrRrurVrXÚ _alignmentrlrqrOÚadd)rr r^rjrkZ real_stoprrrÚmalloc(s  z Heap.mallocN)r%r&r'r~r`rZrrYrÚ staticmethodrVr_rerlrqrnrrruryr€rrrrrBss   rBc@s"eZdZeƒZdd„Zdd„ZdS)rcCs^|dkrtd |¡ƒ‚tj|kr.td |¡ƒ‚tj |¡}||f|_t j |tjj |fd�dS)Nrrzr{)Úargs) r<rvr:r|r}rÚ_heapr€rrr1ry)rr rirrrrFs   zBufferWrapper.__init__cCs&|j\\}}}}t|jƒ|||…Sr!)rÚ memoryviewr)rr^rjrkr rrrÚcreate_memoryviewOszBufferWrapper.create_memoryviewN)r%r&r'rBrƒrr…rrrrrBs )rfÚ collectionsrrrr:r(rFÚcontextrrÚrÚ__all__r;rÚobjectr r@r=ÚregisterrBrrrrrÚ s&   $! P