online #ˆl–äY>” je¶…8 Cq§nµ1hßÄ ƒuÁ7ÃÂÁÉa ´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@s0eZdZdZe ¡Zdd„Zdd„Zdd„Z dS) ÚArenazL A shared memory area backed by anonymous memory (Windows). cCsx||_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__Ú__doc__ÚtempfileÚ_RandomNameSequencerrr"r$rrrrr s r c@s8eZdZdZejdkrdgZngZd dd„Zdd„Zd S) r zJ A shared memory area backed by a temporary file (POSIX). Ú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Ústrrrr0[s    zArena._choose_dirN)r ) r%r&r'r(ÚsysÚplatformr4rr0rrrrr 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 rAcCst|| ¡ƒ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) rWÚmaxrJrÚPAGESIZEÚ_DOUBLE_ARENA_SIZE_UNTILrÚinfor rQÚappend)rr ÚlengthÚarenarrrÚ _new_arenažs   zHeap._new_arenacCsz|j}||jkrdS|j |¡}|j|df=|j||f=|j |¡|j|}| |d|f¡|sv|j|=|j  |¡dSrE) r Ú_DISCARD_FREE_SPACE_LARGER_THANrPÚpoprMrNrQÚremoverLrK)rr_r^ÚblocksÚseqr