;
Σβ"Ic               @   s;  d  d d g Z  d d l Z d d l Z d d l Z d d l Z y e j j e j    Z Wn e	 k
 o d Z Yn Xd   Z d   Z d   Z Gd   d  e  Z Gd	   d
 e  Z Gd   d e  Z e   a [ i  Z xV e e j j    D]? \ Z Z e d d  d k o d e k o e e e <qτ qτ Wd S(   u   Processu   current_processu   active_childreni    Nc               C   s   t  S(   u@   
    Return process object representing the current process
    (   u   _current_process(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   current_process!   s    c               C   s   t    t t j  S(   uN   
    Return list of process objects corresponding to live child processes
    (   u   _cleanupu   listu   _current_processu	   _children(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   active_children'   s    c              C   sH   xA t  t j  D]0 }  |  j j   d  k	 o t j j |   q q Wd  S(   N(   u   listu   _current_processu	   _childrenu   _popenu   pollu   Noneu   discard(   u   p(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   _cleanup2   s     c             B   sϋ   |  Ee  Z d  Z d Z d d d d i  d  Z d   Z d   Z d   Z d d  Z	 d   Z
 e d    Z e j d    Z e d	    Z e j d
    Z e d    Z e j d    Z e d    Z e d    Z e Z d   Z d   Z d S(   u   
    Process objects represent activity that is run in a separate process

    The class is analagous to `threading.Thread`
    c             C   sΐ   t  t j  } t j | f |  _ t j |  _ t j |  _ t j |  _ t j   |  _	 d  |  _ | |  _ t |  |  _ t |  |  _ | p+ t |   j d d j d   |  j D  |  _ d  S(   Nu   -u   :c             s   s   |  ] } t  |  Vq d  S(   N(   u   str(   u   .0u   i(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu	   <genexpr>Q   s    (   u   nextu   _current_processu   _counteru	   _identityu   _authkeyu	   _daemonicu   _tempdiru   osu   getpidu   _parent_pidu   Noneu   _popenu   _targetu   tupleu   _argsu   dictu   _kwargsu   typeu   __name__u   joinu   _name(   u   selfu   groupu   targetu   nameu   argsu   kwargsu   count(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   __init__D   s    		c             C   s(   |  j  o |  j  |  j |  j   n d S(   uQ   
        Method to be run in sub-process; can be overridden in sub-class
        N(   u   _targetu   _argsu   _kwargs(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   runS   s    
c             C   sW   t    |  j d k	 o |  j } n d d l m } | |   |  _ t j j |   d S(   u%   
        Start child process
        i   (   u   PopenN(	   u   _cleanupu   _Popenu   Noneu   forkingu   Popenu   _popenu   _current_processu	   _childrenu   add(   u   selfu   Popen(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   startZ   s    	c             C   s   |  j  j   d S(   uT   
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N(   u   _popenu	   terminate(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu	   terminatek   s    c             C   s7   |  j  j |  } | d k	 o t j j |   n d S(   u5   
        Wait until child process terminates
        N(   u   _popenu   waitu   Noneu   _current_processu	   _childrenu   discard(   u   selfu   timeoutu   res(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   joinq   s    c             C   sD   |  t  k o d S|  j d k o d S|  j j   |  j j d k S(   u1   
        Return whether process is alive
        TNF(   u   _current_processu   Trueu   _popenu   Noneu   Falseu   pollu
   returncode(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   is_alive{   s    c             C   s   |  j  S(   N(   u   _name(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   name   s    c             C   s   | |  _  d  S(   N(   u   _name(   u   selfu   name(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   name   s    c             C   s   |  j  S(   u4   
        Return whether process is a daemon
        (   u	   _daemonic(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   daemon   s    c             C   s   | |  _  d S(   u1   
        Set whether process is a daemon
        N(   u	   _daemonic(   u   selfu   daemonic(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   daemon   s    c             C   s   |  j  S(   N(   u   _authkey(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   authkey   s    c             C   s   t  |  |  _ d S(   u2   
        Set authorization key of process
        N(   u   AuthenticationStringu   _authkey(   u   selfu   authkey(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   authkey£   s    c             C   s%   |  j  d k o |  j  S|  j  j   S(   uM   
        Return exit code of process or `None` if it has yet to stop
        N(   u   _popenu   Noneu   poll(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   exitcodeͺ   s    c             C   s0   |  t  k o t j   S|  j o
 |  j j Sd S(   uV   
        Return indentifier (PID) of process or `None` if it has yet to start
        N(   u   _current_processu   osu   getpidu   _popenu   pid(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   ident³   s    c             C   sο   |  t  k o
 d } nd |  j t j   k o
 d } nD |  j d  k o
 d } n* |  j j   d  k	 o |  j } n d } t |  t	 k o1 | d k o
 d } qΎ d t
 j | |  } n d t |   j |  j | |  j o d p d	 f S(
   Nu   startedu   unknownu   initiali    u   stoppedu   stopped[%s]u   <%s(%s, %s%s)>u    daemonu    (   u   _current_processu   _parent_pidu   osu   getpidu   _popenu   Noneu   pollu   exitcodeu   typeu   intu   _exitcode_to_nameu   getu   __name__u   _nameu	   _daemonic(   u   selfu   status(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   __repr__Ώ   s    



c             C   sΌ  d d l  m } yΉ t   |  _ t j d  |  _ t j d  k	 o; y t
 j t j j    Wq| t t f k
 o Yq| Xn |  a | j j   | j   | j d  z |  j   d } Wd  | j   XWnΫ t k
 o } zr | j p
 d } nZ t | j d  t k o | j d } n/ t j j | j d d  t j j   d } WYd  d  } ~ XnI d } d d  l } t j j d |  j  t j j   | j   Yn X| j d |  | S(   Ni   (   u   utilu    child process calling self.run()i    u   
u   Process %s:
u    process exiting with exitcode %d(    u    u   utilu   setu	   _childrenu	   itertoolsu   countu   _counteru   sysu   stdinu   Noneu   osu   closeu   filenou   OSErroru
   ValueErroru   _current_processu   _finalizer_registryu   clearu   _run_after_forkersu   infou   runu   _exit_functionu
   SystemExitu   argsu   typeu   intu   stderru   writeu   flushu	   tracebacku   nameu	   print_exc(   u   selfu   utilu   exitcodeu   eu	   traceback(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu
   _bootstrapΧ   sB    





N(    (   u   __name__u
   __module__u   __doc__u   Noneu   _Popenu   __init__u   runu   startu	   terminateu   joinu   is_aliveu   propertyu   nameu   setteru   daemonu   authkeyu   exitcodeu   identu   pidu   __repr__u
   _bootstrap(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   Process<   s&   
			
		
	c             B   s   |  Ee  Z d    Z d S(   c             C   s@   d d l  m } | j   p t d   n t t |   f f S(   Ni   (   u   PopenuJ   Pickling an AuthenticationString object is disallowed for security reasons(   u   forkingu   Popenu   thread_is_spawningu	   TypeErroru   AuthenticationStringu   bytes(   u   selfu   Popen(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu
   __reduce__  s
    N(   u   __name__u
   __module__u
   __reduce__(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   AuthenticationString  s   
u   AuthenticationStringc             B   s   |  Ee  Z d    Z d S(   c             C   sp   d |  _  d |  _ d |  _ d  |  _ d  |  _ t j d  |  _	 t
   |  _ t t j d   |  _ d  |  _ d  S(   Nu   MainProcessi   i    (    F(   u	   _identityu   Falseu	   _daemonicu   _nameu   Noneu   _parent_pidu   _popenu	   itertoolsu   countu   _counteru   setu	   _childrenu   AuthenticationStringu   osu   urandomu   _authkeyu   _tempdir(   u   self(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   __init__  s    					N(   u   __name__u
   __module__u   __init__(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   _MainProcess  s   
u   _MainProcessi   u   SIGu   _(   u   __all__u   osu   sysu   signalu	   itertoolsu   pathu   abspathu   getcwdu   ORIGINAL_DIRu   OSErroru   Noneu   current_processu   active_childrenu   _cleanupu   objectu   Processu   bytesu   AuthenticationStringu   _MainProcessu   _current_processu   _exitcode_to_nameu   listu   __dict__u   itemsu   nameu   signum(    (    (    u4   /mit/python/lib/python3.0/multiprocessing/process.pyu   <module>	   s*   			
Η	 $