B 'c Aɷ @ 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 Zeee G dd deZG dd deZdS ) N ) reductionassert_spawning)util BufferWrapperwin32c @ s, e Zd Ze Zdd Zdd Zdd ZdS )Arenac C sz || _ xTtdD ]@}dt t| jf }tjd||d}t dkrHP | qW t d|| _|| _| j | jf| _ d S )Nd z pym-%d-%s)tagnamer zCannot find name for new mmap)sizerangeosgetpidnext_randmmap_winapiZGetLastErrorcloseFileExistsErrornamebuffer_state)selfr ir buf r 9/opt/alt/python37/lib64/python3.7/multiprocessing/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 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 @ s4 e Zd ZejdkrdgZng Zd ddZdd ZdS ) r Zlinuxz/dev/shmr c C sx || _ || _|dkrbtjdt | |d\| _}t| t | tj | jf t| j| t| j| j | _ d S )Nr zpym-%d-)prefixdir)r fdr% Zmkstempr r _choose_dirunlinkr Finalizer ftruncater r )r r r( r r r r r D s zArena.__init__c C s6 x,| j D ]"}t|}|j|j |kr|S qW t S )N)_dir_candidatesr statvfsf_bavailf_frsizer Zget_temp_dir)r r dstr r r r) P s zArena._choose_dirN)r )r" r# r$ sysplatformr- r r) r r r r r > s c C s( | j dkrtdt| jt| j ffS )Nr zDArena is unpicklable because forking was enabled when it was created)r( ValueError rebuild_arenar r ZDupFd)ar r r reduce_arenaY s r8 c C s t | | S )N)r detach)r Zdupfdr r r r6 _ s r6 c @ sZ e Zd ZdZejfddZedd Zdd Z dd Z d d Zdd Zdd Z dd ZdS )Heap c C sJ t | _t | _|| _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 l s z Heap.__init__c C s |d }| | | @ S )Nr r )nZ alignmentmaskr r r _roundupy s z Heap._roundupc C s t | j|}|t| jkrj| t| j|tj}| jd9 _t d| t|}| j | |d|fS | j| }| j| }| }|s| j|= | j|= |\}}}| j||f= | j||f= |S )N z"allocating a new mmap of length %dr )bisectZbisect_leftr@ lenrJ maxr? r PAGESIZEr infor rF appendrA poprB rC ) r r r lengtharenaseqblockstartstopr r r _malloc s" zHeap._mallocc C s |\}}}y| j ||f }W n tk r0 Y nX | |\}}y| j||f }W n tk rf Y nX | |\}}|||f}|| }y| j| | W n. tk r |g| j|<