ó õùPc@s ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z dgZ ejdkrÇddlmZdefd„ƒYZndefd „ƒYZd efd „ƒYZdefd „ƒYZdS( iÿÿÿÿN(tFinalizetinfo(tassert_spawningt BufferWrappertwin32(RtArenacBs/eZejƒZd„Zd„Zd„ZRS(cCsƒ||_dtjƒtjjƒf|_tjd|jd|jƒ|_t j ƒdksjt dƒ‚|j|jf|_ dS(Ns pym-%d-%diÿÿÿÿttagnameistagname already in use( tsizetostgetpidRt_countertnexttnametmmaptbufferRt GetLastErrortAssertionErrort_state(tselfR((s%..\python\lib\multiprocessing\heap.pyt__init__#s  "!cCst|ƒ|jS(N(RR(R((s%..\python\lib\multiprocessing\heap.pyt __getstate__*s cCsY|\|_|_|_tjd|jd|jƒ|_tjƒtjksUt‚dS(NiÿÿÿÿR( RR RR RRRtERROR_ALREADY_EXISTSR(Rtstate((s%..\python\lib\multiprocessing\heap.pyt __setstate__.s!(t__name__t __module__t itertoolstcountR RRR(((s%..\python\lib\multiprocessing\heap.pyRs   cBseZd„ZRS(cCs+tjd|ƒ|_||_d|_dS(Niÿÿÿÿ(R RRtNoneR (RR((s%..\python\lib\multiprocessing\heap.pyR7s (RRR(((s%..\python\lib\multiprocessing\heap.pyR5stHeapcBsYeZdZejd„Zed„ƒZd„Zd„Z d„Z d„Z d„Z RS(icCsdtjƒ|_tjƒ|_||_g|_i|_i|_ i|_ t ƒ|_ g|_ dS(N(RR t_lastpidt threadingtLockt_lockt_sizet_lengthst _len_to_seqt_start_to_blockt_stop_to_blocktsett_allocated_blockst_arenas(RR((s%..\python\lib\multiprocessing\heap.pyRDs      cCs|d}|||@S(Ni((tnt alignmenttmask((s%..\python\lib\multiprocessing\heap.pyt_roundupOs c Cstj|j|ƒ}|t|jƒkr|jt|j|ƒtjƒ}|jd9_t d|ƒt |ƒ}|j j |ƒ|d|fS|j|}|j |}|jƒ}|sÓ|j |=|j|=n|\}}}|j||f=|j||f=|S(Nis"allocating a new mmap of length %di(tbisectt bisect_leftR#tlenR-tmaxR"R tPAGESIZERRR)tappendR$tpopR%R&( RRtitlengthtarenatseqtblocktstarttstop((s%..\python\lib\multiprocessing\heap.pyt_mallocUs"!      c Cs!|\}}}y|j||f}Wntk r9nX|j|ƒ\}}y|j||f}Wntk rynX|j|ƒ\}}|||f}||}y|j|j|ƒWn4tk rö|g|j|‰s    cCs^tjƒ|jkst‚|jjƒz!|jj|ƒ|j|ƒWd|jj ƒXdS(N( RR RRR!tacquireR(RDRCtrelease(RR9((s%..\python\lib\multiprocessing\heap.pytfree˜s  cCsõd|kotjkns%t‚tjƒ|jkrG|jƒn|jjƒzŒ|j t |dƒ|j ƒ}|j |ƒ\}}}||}||kr¼|j |||fƒn|||f}|jj|ƒ|SWd|jjƒXdS(Nii(tsystmaxintRRR RRR!RER-R1t _alignmentR<RCR(taddRF(RRR7R:R;tnew_stopR9((s%..\python\lib\multiprocessing\heap.pytmalloc¢s%    ( RRRJR R2Rt staticmethodR-R<RCR>RGRM(((s%..\python\lib\multiprocessing\heap.pyR@s     cBs,eZeƒZd„Zd„Zd„ZRS(cCsfd|kotjkns%t‚tjj|ƒ}||f|_t|tjjd|fƒdS(Nitargs( RHRIRRt_heapRMRRRG(RRR9((s%..\python\lib\multiprocessing\heap.pyR¼s%cCsJ|j\\}}}}tj|jƒ\}}||ksBt‚||S(N(Rt_multiprocessingtaddress_of_bufferRR(RR7R:R;RtaddressR6((s%..\python\lib\multiprocessing\heap.pyt get_addressÂscCs |jdS(Ni(R(R((s%..\python\lib\multiprocessing\heap.pytget_sizeÈs(RRRRPRRTRU(((s%..\python\lib\multiprocessing\heap.pyR¸s   (R.R ttempfileRRHRRRQtmultiprocessing.utilRRtmultiprocessing.forkingRt__all__tplatformRtobjectRRR(((s%..\python\lib\multiprocessing\heap.pyt s          x