e f @ s# d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d g Z e j d k r d d l Z Gd d d e Z n> Gd d d e Z d d Z d d Z e j e e Gd d d e Z Gd d d e Z d S) N )context) reduction)util BufferWrapperwin32c @ s@ e Z d Z e j Z d d Z d d Z d d Z d S)Arenac C s | | _ xw t d D]] } d t j t | j f } t j d | d | } t j d k ri Pn | j q Wt d | | _ | | _ | j | j f | _ d S)Nd z pym-%d-%sr tagnamer zCannot find name for new mmap)sizerangeosgetpidnext_randmmap_winapiZGetLastErrorcloseFileExistsErrornamebuffer_state)selfr ir Zbuf r 9/opt/alt/python34/lib64/python3.4/multiprocessing/heap.py__init__# s zArena.__init__c C s t j | | j S)N)r Zassert_spawningr )r r r r __getstate__2 s zArena.__getstate__c C s> | \ | _ | _ | _ t j d | j d | j | _ d S)Nr r r )r r r r r )r stater r r __setstate__6 s !zArena.__setstate__N) __name__ __module____qualname__tempfileZ_RandomNameSequencer r r r r r r r r s r c @ s e Z d Z d d d Z d S)r r c C s | | _ | | _ | d k r t j d d t j d t j \ | _ } t j | t j | t j | j f t | j d d d } | j d | Wd QXn t j | j | j | _ d S) Nr prefixzpym-%d-dirwbclosefdFs r )r fdr$ Zmkstempr r r Zget_temp_dirunlinkFinalizer openwriter r )r r r) r fr r r r ? s ( zArena.__init__Nr )r! r" r# r r r r r r = s c C s= | j d k r t d n t | j t j | j f f S)Nr zDArena is unpicklable because forking was enabled when it was createdr )r) ValueError rebuild_arenar r ZDupFd)ar r r reduce_arenaK s r2 c C s t | | j S)N)r detach)r Zdupfdr r r r0 Q s r0 c @ s e Z d Z d Z e j d d Z e d d Z d d Z d d Z d d Z d d Z d d Z d d Z d S)Heap c C sm t j | _ t j | _ | | _ g | _ i | _ i | _ i | _ t | _ g | _ g | _ d S)N)r r _lastpid threadingZLock_lock_size_lengths_len_to_seq_start_to_block_stop_to_blockset_allocated_blocks_arenas_pending_free_blocks)r r r r r r ^ s z Heap.__init__c C s | d } | | | @S)Nr r )nZ alignmentmaskr r r _roundupk s z Heap._roundupc C s t j | j | } | t | j k r | j t | j | t j } | j d 9_ t j d | t | } | j j | | d | f S| j | } | j | } | j } | s | j | =| j | =n | \ } } } | j | | f =| j | | f =| S)N z"allocating a new mmap of length %dr )bisectZbisect_leftr: lenrD maxr9 r PAGESIZEr infor r@ appendr; popr<