ÿØÿà 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Zd dlZddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ d	d
ddgZdZejdZG dd deZdddZdd Zdd Zdd Ze ZejZejZejZejZdS )    N   )
connection)process)	reduction)semaphore_tracker)spawn)utilensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   Qc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
ForkServerc             C   s.   d | _ d | _d | _d | _tj | _dg| _d S )N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingZLock_lock_preload_modules)self r   2/usr/lib64/python3.6/multiprocessing/forkserver.py__init__!   s    
zForkServer.__init__c             C   s&   t dd | jD std|| _dS )z>Set list of module names to try to load in forkserver process.c             s   s   | ]}t |tkV  qd S )N)typestr).0modr   r   r   	<genexpr>+   s    z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)allr   	TypeError)r   Zmodules_namesr   r   r   r   )   s    z!ForkServer.set_forkserver_preloadc             C   s   | j S )zReturn list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r   )r   r   r   r   r
   /   s    zForkServer.get_inherited_fdsc             C   s   | j   t|d tkr tdtjtj}|j| j tj	 \}}tj	 \}}||| j
tj g}||7 }z<ytj|| ||fS    tj| tj|  Y nX W dtj| tj| X W dQ R X dS )a;  Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
           ztoo many fdsN)r	   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXZconnectr   ospiper   r   Zgetfdr   Zsendfdsclose)r   fdsZclientZparent_rchild_wchild_rZparent_wZallfdsr   r   r   r   7   s&    



z!ForkServer.connect_to_new_processc                s  | j n tj  | jdk	rVtj| jtj\}}|s8dS tj| j d| _	d| _d| _d}| j
rddh tjd}t fdd|j D }ni }tjtj}tjd	}|j| tj|d
 |j  tj \}}ztyV|j |g}	||j || j
|f; }tj }
|
gtj  }|d|g7 }tj|
||	}W n   tj|  Y nX W dtj| X || _	|| _|| _W dQ R X W dQ R X dS )zMake sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        Nz-from multiprocessing.forkserver import main; zmain(%d, %d, %r, **%r)	main_pathsys_pathignorec             3   s"   | ]\}}| kr||fV  qd S )Nr   )r   xy)desired_keysr   r   r    o   s    z,ForkServer.ensure_running.<locals>.<genexpr>r(   i  z-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r))r   r   r	   r   r)   waitpidWNOHANGr+   r   r   r   r   Zget_preparation_datadictitemsr'   r(   r   Zarbitrary_addressZbindchmodZlistenr*   filenoZget_executabler   Z_args_from_interpreter_flagsZspawnv_passfds)r   pidZstatuscmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargsr   )r4   r   r	   T   sL    

 



zForkServer.ensure_runningN)__name__
__module____qualname__r   r   r
   r   r	   r   r   r   r   r      s
   r   c          4   C   s  |rhd|kr8|dk	r8dt j _ztj| W dt j `X x.|D ]&}yt| W q> tk
rb   Y q>X q>W tj  t	j
t	jt	jt	ji}dd |j D }tjtj| dR}tj <}	|j t_|	j|tj |	j|tj xyxdd |	j D }
|
rP qW ||
kr$tj|d	d
ks tt||
ks2t|j d l}d	}tj dkrzFyt|||| W n. tk
r   t j!t j"   t j#j$  Y nX W dtj%| X W dQ R X W q t&k
r } z|j't'j(krւ W Y dd}~X qX qW W dQ R X W dQ R X dS )zRun forkserver.r   NTc             S   s   i | ]\}}t j |||qS r   )signal)r   sigvalr   r   r   
<dictcomp>   s   zmain.<locals>.<dictcomp>)r:   c             S   s   g | ]\}}|j qS r   )Zfileobj)r   keyZeventsr   r   r   
<listcomp>   s    zmain.<locals>.<listcomp>r       r   ))r   Zcurrent_processZ_inheritingr   Zimport_main_path
__import__ImportErrorr   Z_close_stdinrD   SIGCHLDSIG_IGNSIGINTr8   r'   r(   	selectorsZDefaultSelectorZgetsockname_forkserverr   registerZ
EVENT_READZselectr)   readAssertionError
SystemExitZacceptfork
_serve_one	Exceptionsys
excepthookexc_infostderrflush_exitOSErrorerrnoZECONNABORTED)Zlistener_fdr?   Zpreloadr/   r0   modnamehandlersZold_handlersr>   ZselectorZrfdsscodeer   r   r   main   sV    





rf   c             C   s   |j   tj | x |j D ]\}}tj|| qW tj| td }| j   t|tks\t|^}}t	_
}	t	_|	tj_t|tj  dtjkrdd l}
|
j  tj|}t|| d S )Nr   randomr   )r+   r)   r8   rD   r   Zrecvfdsr%   r$   rT   rQ   r   r   r   Z_semaphore_trackerZ_fdwrite_unsignedgetpidrY   modulesrg   Zseedr   _main)rc   r>   r?   rb   rE   rF   r,   r.   r-   Zstfdrg   rd   r   r   r   rW      s    


rW   c             C   sR   d}t j}x8t||k rBtj| |t| }|s8td||7 }qW t j|d S )NrJ   zunexpected EOFr   )UNSIGNED_STRUCTsizer$   r)   rS   EOFErrorZunpack)fdr=   Zlengthrc   r   r   r   read_unsigned   s    rp   c             C   s@   t j|}x0|r:tj| |}|dkr,td||d  }qW d S )Nr   zshould not get here)rl   Zpackr)   writeRuntimeError)ro   nmsgnbytesr   r   r   rh      s    
rh   )NN)r`   r)   rP   rD   r'   ZstructrY   r    r   r   contextr   r   r   r   __all__r%   ZStructrl   objectr   rf   rW   rp   rh   rQ   r	   r
   r   r   r   r   r   r   <module>   s6   
s
=!
