509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \   ã               @   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mZ ddl	m
Z
 dgZejdkrvd dlZG dd„ deƒZn,G d	d„ deƒZd
d„ Zdd„ Zejeeƒ G dd„ deƒZG dd„ deƒZdS )é    Né   )Ú	reductionÚassert_spawning)ÚutilÚBufferWrapperZwin32c               @   s,   e Zd Zejƒ Zdd„ Zdd„ Zdd„ ZdS )ÚArenac             C   sz   || _ xTtdƒD ]@}dtjƒ t| jƒf }tjd||d�}tjƒ dkrHP |j	ƒ  qW t
dƒ‚|| _|| _| j | jf| _d S )Néd   z	pym-%d-%sr   )Útagnamer   zCannot find name for new mmapéÿÿÿÿ)ÚsizeÚrangeÚosÚgetpidÚnextÚ_randÚmmapÚ_winapiZGetLastErrorÚcloseÚFileExistsErrorÚnameÚbufferÚ_state)Úselfr   Úir   Zbuf© r   ú,/usr/lib64/python3.6/multiprocessing/heap.pyÚ__init__"   s    zArena.__init__c             C   s   t | ƒ | jS )N)r   r   )r   r   r   r   Ú__getstate__1   s    zArena.__getstate__c             C   s,   | \| _ | _| _tjd| j | jd�| _d S )Nr   )r	   r
   )r   r   r   r   r   )r   Ústater   r   r   Ú__setstate__5   s    zArena.__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tjƒ  tjƒ d�\| _}tj|ƒ tj	| tj
| jfƒ t| jddd��^}d
}||kršd| }xt|| ƒD ]}|j|ƒ q†W ~|jd||  ƒ |jƒ |ks¼t‚W d Q R X tj| j| j ƒ| _d S )Nr   zpym-%d-)ÚprefixÚdirÚwbF)Úclosefdi   ó    r
   i   )r   Úfdr#   Zmkstempr   r   r   Zget_temp_dirÚunlinkÚFinalizer   Úopenr   ÚwriteÚtellÚAssertionErrorr   r   )r   r   r)   r   ÚfZbsZzerosÚ_r   r   r   r   @   s"    
zArena.__init__Nr
   )r
   )r    r!   r"   r   r   r   r   r   r   >   s   c             C   s(   | j dkrtdƒ‚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   ZDupFd)Úar   r   r   Úreduce_arenaS   s    
r5   c             C   s   t | |jƒ ƒS )N)r   Údetach)r   Zdupfdr   r   r   r3   Y   s    r3   c               @   sZ   e Zd ZdZejf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   sJ   t jƒ | _tjƒ | _|| _g | _i | _i | _	i | _
tƒ | _g | _g | _d S )N)r   r   Ú_lastpidÚ	threadingZLockÚ_lockÚ_sizeÚ_lengthsÚ_len_to_seqÚ_start_to_blockÚ_stop_to_blockÚsetÚ_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	alignmentÚmaskr   r   r   Ú_roundups   s    zHeap._roundupc       	      C   sÀ   t j| j|ƒ}|t| jƒkrj| jt| j|ƒtjƒ}|  jd9  _t	j
d|ƒ t|ƒ}| jj|ƒ |d|fS | j| }| j| }|jƒ }|sš| j|= | j|= |\}}}| j||f= | j||f= |S )Né   z"allocating a new mmap of length %dr   )ÚbisectZbisect_leftr=   ÚlenrG   Úmaxr<   r   ÚPAGESIZEr   Úinfor   rC   Úappendr>   Úpopr?   r@   )	r   r   r   ÚlengthÚarenaÚseqÚblockÚstartÚstopr   r   r   Ú_mallocy   s"    



zHeap._mallocc       	      C   sì   |\}}}y| j ||f }W n tk
r0   Y nX | j|ƒ\}}y| j||f }W n tk
rf   Y nX | j|ƒ\}}|||f}|| }y| j| j|ƒ W n. tk
rÊ   |g| j|< tj| j|ƒ Y nX || j||f< || j ||f< d S )N)	r@   ÚKeyErrorÚ_absorbr?   r>   rN   rI   Zinsortr=   )	r   rS   rQ   rT   rU   Z
prev_blockr1   Z
next_blockrP   r   r   r   Ú_free�   s(    

z
Heap._freec             C   s^   |\}}}| j ||f= | j||f= || }| j| }|j|ƒ |sV| j|= | jj|ƒ ||fS )N)r?   r@   r>   Úremover=   )r   rS   rQ   rT   rU   rP   rR   r   r   r   rX   ­   s    


zHeap._absorbc             C   sF   x@y| j jƒ }W n tk
r&   P Y nX | jj|ƒ | j|ƒ qW d S )N)rD   rO   Ú
IndexErrorrB   rZ   rY   )r   rS   r   r   r   Ú_free_pending_blocks¼   s    zHeap._free_pending_blocksc          
   C   s`   t jƒ | jkst‚| jjdƒs,| jj|ƒ n0z"| jƒ  | j	j
|ƒ | j|ƒ W d | jjƒ  X d S )NF)r   r   r9   r/   r;   ÚacquirerD   rN   r\   rB   rZ   rY   Úrelease)r   rS   r   r   r   ÚfreeÆ   s    
z	Heap.freec             C   s¬   d|  kot jk n  st‚tjƒ | jkr4| jƒ  | j�h | jƒ  | j	t
|dƒ| jƒ}| j|ƒ\}}}|| }||k rˆ| j|||fƒ |||f}| jj|ƒ |S Q R X d S )Nr   r   )ÚsysÚmaxsizer/   r   r   r9   r   r;   r\   rG   rK   Ú
_alignmentrV   rY   rB   Úadd)r   r   rQ   rT   rU   Znew_stoprS   r   r   r   ÚmallocÞ   s    
zHeap.mallocN)r    r!   r"   rb   r   rL   r   ÚstaticmethodrG   rV   rY   rX   r\   r_   rd   r   r   r   r   r7   b   s   
r7   c               @   s"   e Zd Zeƒ Zdd„ Zdd„ ZdS )r   c             C   sN   d|  kot jk n  st‚tjj|ƒ}||f| _tj| tjj	|fd� d S )Nr   )Úargs)
r`   ra   r/   r   Ú_heaprd   r   r   r+   r_   )r   r   rS   r   r   r   r   ö   s    
zBufferWrapper.__init__c             C   s&   | j \\}}}}t|jƒ||| … S )N)r   Ú
memoryviewr   )r   rQ   rT   rU   r   r   r   r   Úcreate_memoryviewü   s    zBufferWrapper.create_memoryviewN)r    r!   r"   r7   rg   r   ri   r   r   r   r   r   ò   s   )rI   r   r   r`   r#   r:   Úcontextr   r   Ú r   Ú__all__Úplatformr   Úobjectr   r5   r3   Úregisterr7   r   r   r   r   r   Ú<module>
   s$   
  