ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     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 )Nd   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rtjdtj  tj d\| _}tj| tj	| tj
| jf t| jdddN}d
}||krd| }xt|| D ]}|j| qW ~|jd||   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   writer   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    
r3   c             C   s   t | |j S )N)r   detach)r   Zdupfdr   r   r   r1   Y   s    r1   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;   lenrE   maxr:   r   PAGESIZEr   infor   rA   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<   rL   rG   Zinsortr;   )	r   rQ   rO   rR   rS   Z
prev_blockr/   Z
next_blockrN   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   rQ   rO   rR   rS   rN   rP   r   r   r   rV      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)rB   rM   
IndexErrorr@   rX   rW   )r   rQ   r   r   r   _free_pending_blocks   s    zHeap._free_pending_blocksc          
   C   sN   | j jds| jj| n0z"| j  | jj| | j| W d | j j  X d S )NF)	r9   acquirerB   rL   rZ   r@   rX   rW   release)r   rQ   r   r   r   free   s    z	Heap.freec             C   s   t j | jkr| j  | jh | j  | jt|d| j}| j	|\}}}|| }||k rj| j
|||f |||f}| jj| |S Q R X d S )Nr   )r   r   r7   r   r9   rZ   rE   rI   
_alignmentrT   rW   r@   add)r   r   rO   rR   rS   Znew_stoprQ   r   r   r   malloc   s    
zHeap.mallocN)r    r!   r"   r^   r   rJ   r   staticmethodrE   rT   rW   rV   rZ   r]   r`   r   r   r   r   r5   b   s   
r5   c               @   s"   e Zd Ze Zdd Zdd ZdS )r   c             C   s0   t jj|}||f| _tj| t jj|fd d S )N)args)r   _heapr`   r   r   r+   r]   )r   r   rQ   r   r   r   r      s    
zBufferWrapper.__init__c             C   s&   | j \\}}}}t|j|||  S )N)r   
memoryviewr   )r   rO   rR   rS   r   r   r   r   create_memoryview   s    zBufferWrapper.create_memoryviewN)r    r!   r"   r5   rc   r   re   r   r   r   r   r      s   )rG   r   r   sysr#   r8   contextr   r    r   __all__platformr   objectr   r3   r1   registerr5   r   r   r   r   r   <module>
   s$   
  