3 2a @ s d dl Z d dlZd dlZd dlZd dlZd dlZddlmZmZ ddl m Z dgZejdkrvd dl Z G dd deZn,G d d deZd d Zdd Zejee G dd deZG dd deZdS ) N ) reductionassert_spawning)util BufferWrapperwin32c @ s, e Zd Zej Zdd Zdd Zdd ZdS )Arenac C sz || _ xTtdD ]@}dtj t| jf }tjd||d}tj dkrHP |j qW t d|| _|| _| j | jf| _ d S )Nd z pym-%d-%sr )tagnamer zCannot find name for new mmap)sizerangeosgetpidnext_randmmap_winapiZGetLastErrorcloseFileExistsErrornamebuffer_state)selfr ir buf r )/opt/alt/python36/lib64/python3.6/heap.py__init__" s zArena.__init__c C s t | | jS )N)r r )r r r r __getstate__1 s zArena.__getstate__c C s, | \| _ | _| _tjd| j | jd| _d S )Nr )r r )r r r r r )r stater r r __setstate__5 s zArena.__setstate__N) __name__ __module____qualname__tempfileZ_RandomNameSequencer r r r! r r r r r s r c @ s e Zd ZdddZdS )r r c C s || _ || _|d krtjdtj tj d\| _}tj| tj | tj | jf t| jdddN}d }||krd| }xt|| D ]}|j | qW ~|j d|| W d Q R X tj| j| j | _d S )Nr zpym-%d-)prefixdirwbF)closefdi r i )r fdr% Zmkstempr r r Zget_temp_dirunlinkFinalizer openr writer r )r r r+ r fbsZzeros_r r r r @ s" zArena.__init__Nr )r )r" r# r$ r r r r r r > s c C s( | j dkrtdt| jtj| j ffS )Nr zDArena is unpicklable because forking was enabled when it was createdr )r+ ValueError rebuild_arenar r ZDupFd)ar r r reduce_arenaS s r6 c C s t | |j S )N)r detach)r Zdupfdr r r r4 Y s r4 c @ sZ e Zd ZdZejfddZedd Zdd Z dd Z d d Zdd Zdd Z dd ZdS )Heap c C sJ t j | _tj | _|| _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 f s z Heap.__init__c C s |d }| | | @ S )Nr r )nZ alignmentmaskr r r _roundups s z Heap._roundupc C s t j| j|}|t| jkrj| jt| j|tj}| jd9 _t j d| t|}| jj | |d|fS | j| }| j| }|j }|s| j|= | j|= |\}}}| j||f= | j||f= |S )N z"allocating a new mmap of length %dr )bisectZbisect_leftr> lenrH maxr= r PAGESIZEr infor rD appendr? popr@ rA ) r r r lengtharenaseqblockstartstopr r r _mallocy s" zHeap._mallocc C s |\}}}y| j ||f }W n tk r0 Y nX | j|\}}y| j||f }W n tk rf Y nX | j|\}}|||f}|| }y| j| j| W n. tk r |g| j|<