ž ¨˙fec@sýddlZddlZddlZddlZddlZddlZddlZddlmZm Z ddl m Z dgZ ej dkrˇddlZGdd„deƒZnGdd„deƒZGd d „d eƒZGd d„deƒZdS( iN(uFinalizeuinfo(uassert_spawningu BufferWrapperuwin32cBsD|EeZdZejƒZdd„Zdd„Zdd„ZdS(uArenacCsƒ||_dtjƒttjƒf|_tjd|jd|jƒ|_t j ƒdksjt dƒ‚|j|jf|_ dS(Nu pym-%d-%diutagnameiutagname already in usei˙˙˙˙( usizeuosugetpidunextuArenau_counterunameummapubufferu_winapiu GetLastErroruAssertionErroru_state(uselfusize((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu__init__#s  "!uArena.__init__cCst|ƒ|jS(N(uassert_spawningu_state(uself((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu __getstate__*s uArena.__getstate__cCsY|\|_|_|_tjd|jd|jƒ|_tjƒtjksUt‚dS(Niutagnamei˙˙˙˙( usizeunameu_stateummapubufferu_winapiu GetLastErroruERROR_ALREADY_EXISTSuAssertionError(uselfustate((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu __setstate__.s!uArena.__setstate__N( u__name__u __module__u __qualname__u itertoolsucountu_counteru__init__u __getstate__u __setstate__(u __locals__((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyuArenas   uArenacBs |EeZdZdd„ZdS(uArenacCs+tjd|ƒ|_||_d|_dS(Nii˙˙˙˙(ummapubufferusizeuNoneuname(uselfusize((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu__init__7s uArena.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyuArena5scBs†|EeZdZdZejdd„Zedd„ƒZdd„Z dd „Z d d „Z d d „Z dd„Z dd„ZdS(uHeapicCsmtjƒ|_tjƒ|_||_g|_i|_i|_ i|_ t ƒ|_ g|_ g|_dS(N(uosugetpidu_lastpidu threadinguLocku_locku_sizeu_lengthsu _len_to_sequ_start_to_blocku_stop_to_blockusetu_allocated_blocksu_arenasu_pending_free_blocks(uselfusize((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu__init__Ds       u Heap.__init__cCs|d}|||@S(Ni((unu alignmentumask((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu_roundupQs u Heap._roundupc 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(Niu"allocating a new mmap of length %di(ubisectu bisect_leftu_lengthsulenu_roundupumaxu_sizeummapuPAGESIZEuinfouArenau_arenasuappendu _len_to_sequpopu_start_to_blocku_stop_to_block( uselfusizeuiulengthuarenausequblockustartustop((u9/opt/alt/python33/lib64/python3.3/multiprocessing/heap.pyu_mallocWs"!      u Heap._mallocc Cs$|\}}}y|j||f}Wntk r:YnX|j|ƒ\}}y|j||f}Wntk r{YnX|j|ƒ\}}|||f}||}y|j|j|ƒWn5tk rů|g|j| s          “