Ñò
¨YÅHc           @   s7  d  d d g Z  d d k Z d d k Z d d k Z d d k Z y e i i e i ƒ  ƒ Z Wn e	 j
 o d Z n Xd „  Z d „  Z d „  Z d  e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  a [ h  Z xJ e i i ƒ  D]9 \ Z Z e d  d j o d e j o e e e <qö qö Wd S(   t   Processt   current_processt   active_childreniÿÿÿÿNc           C   s   t  S(   s@   
    Return process object representing the current process
    (   t   _current_process(    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR   !   s    c           C   s   t  ƒ  t t i ƒ S(   sN   
    Return list of process objects corresponding to live child processes
    (   t   _cleanupt   listR   t	   _children(    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR   '   s    c          C   sH   xA t  t i ƒ D]0 }  |  i i ƒ  d  j	 o t i i |  ƒ q q Wd  S(   N(   R   R   R   t   _popent   pollt   Nonet   discard(   t   p(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR   2   s     c           B   sõ   e  Z d  Z d Z d d d d h  d „ Z d „  Z d „  Z d „  Z d d „ Z	 d „  Z
 e d „  ƒ Z e i d „  ƒ Z e d	 „  ƒ Z e i d
 „  ƒ Z e d „  ƒ Z e i d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e Z d „  Z d „  Z RS(   s€   
    Process objects represent activity that is run in a separate process

    The class is analagous to `threading.Thread`
    c         C   s×   | d  j p
 t d ‚ t i i ƒ  } t i | f |  _ t i |  _ t i |  _ t i |  _ t	 i
 ƒ  |  _ d  |  _ | |  _ t | ƒ |  _ t | ƒ |  _ | p+ t |  ƒ i d d i d „  |  i Dƒ ƒ |  _ d  S(   Ns#   group argument must be None for nowt   -t   :c         s   s   x |  ] } t  | ƒ Vq Wd  S(   N(   t   str(   t   .0t   i(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pys	   <genexpr>Q   s   	 (   R	   t   AssertionErrorR   t   _countert   nextt	   _identityt   _authkeyt	   _daemonict   _tempdirt   ost   getpidt   _parent_pidR   t   _targett   tuplet   _argst   dictt   _kwargst   typet   __name__t   joint   _name(   t   selft   groupt   targett   namet   argst   kwargst   count(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   __init__D   s    		c         C   s(   |  i  o |  i  |  i |  i Ž  n d S(   sQ   
        Method to be run in sub-process; can be overridden in sub-class
        N(   R   R   R   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   runS   s    
c         C   s¦   |  i  d j p
 t d ‚ |  i t i ƒ  j p
 t d ‚ t i p
 t d ‚ t ƒ  |  i	 d j	 o |  i	 } n d d k
 l } | |  ƒ |  _  t i i |  ƒ d S(   s%   
        Start child process
        s   cannot start a process twices:   can only start a process object created by current processs3   daemonic processes are not allowed to have childreni   (   t   PopenN(   R   R	   R   R   R   R   R   R   R   t   _Popent   forkingR-   R   t   add(   R$   R-   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   startZ   s    c         C   s   |  i  i ƒ  d S(   sT   
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N(   R   t	   terminate(   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR2   k   s    c         C   sq   |  i  t i ƒ  j p
 t d ‚ |  i d j	 p
 t d ‚ |  i i | ƒ } | d j	 o t i i	 |  ƒ n d S(   s5   
        Wait until child process terminates
        s   can only join a child processs   can only join a started processN(
   R   R   R   R   R   R	   t   waitR   R   R
   (   R$   t   timeoutt   res(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR"   q   s
     c         C   sd   |  t  j o t S|  i t i ƒ  j p
 t d ‚ |  i d j o t S|  i i	 ƒ  |  i i
 d j S(   s1   
        Return whether process is alive
        s   can only test a child processN(   R   t   TrueR   R   R   R   R   R	   t   FalseR   t
   returncode(   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   is_alive{   s     c         C   s   |  i  S(   N(   R#   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR'   ‡   s    c         C   s'   t  | t ƒ p
 t d ‚ | |  _ d  S(   Ns   name must be a string(   t
   isinstanceR   R   R#   (   R$   R'   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR'   ‹   s    c         C   s   |  i  S(   s4   
        Return whether process is a daemon
        (   R   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   daemon   s    c         C   s'   |  i  d j p
 t d ‚ | |  _ d S(   s1   
        Set whether process is a daemon
        s   process has already startedN(   R   R	   R   R   (   R$   t   daemonic(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR;   —   s    c         C   s   |  i  S(   N(   R   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   authkeyŸ   s    c         C   s   t  | ƒ |  _ d S(   s2   
        Set authorization key of process
        N(   t   AuthenticationStringR   (   R$   R=   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR=   £   s    c         C   s%   |  i  d j o |  i  S|  i  i ƒ  S(   sM   
        Return exit code of process or `None` if it has yet to stop
        N(   R   R	   R   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   exitcodeª   s    c         C   s0   |  t  j o t i ƒ  S|  i o
 |  i i Sd S(   sV   
        Return indentifier (PID) of process or `None` if it has yet to start
        N(   R   R   R   R   t   pid(   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   ident³   s    c         C   sï   |  t  j o
 d } nd |  i t i ƒ  j o
 d } nD |  i d  j o
 d } n* |  i i ƒ  d  j	 o |  i } n d } t | ƒ t	 j o1 | d j o
 d } q¾ d t
 i | | ƒ } n d t |  ƒ i |  i | |  i o d p d	 f S(
   Nt   startedt   unknownt   initiali    t   stoppeds   stopped[%s]s   <%s(%s, %s%s)>s    daemont    (   R   R   R   R   R   R	   R   R?   R    t   intt   _exitcode_to_namet   getR!   R#   R   (   R$   t   status(    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   __repr__¿   s    



c         C   s”  d d k  l } y¤ t ƒ  |  _ t i d ƒ |  _ y t i t	 i
 i ƒ  ƒ Wn t t f j
 o n X|  a | i i ƒ  | i ƒ  | i d ƒ z |  i ƒ  d } Wd  | i ƒ  XWnÈ t j
 ov } | i p
 d } qt | i d ƒ t j o | i d } qt	 i i | i d d ƒ t	 i i ƒ  d } nH d } d d  k } t	 i i d |  i ƒ t	 i i ƒ  | i ƒ  n X| i d | ƒ | S(	   Ni   (   t   utils    child process calling self.run()i    s   
iÿÿÿÿs   Process %s:
s    process exiting with exitcode %d(   RF   RL   t   setR   t	   itertoolsR*   R   R   t   closet   syst   stdint   filenot   OSErrort
   ValueErrorR   t   _finalizer_registryt   cleart   _run_after_forkerst   infoR,   t   _exit_functiont
   SystemExitR(   R    RG   t   stderrt   writet   flusht	   tracebackR'   t	   print_exc(   R$   RL   R?   t   eR^   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt
   _bootstrap×   s@    





N(    (   R!   t
   __module__t   __doc__R	   R.   R+   R,   R1   R2   R"   R9   t   propertyR'   t   setterR;   R=   R?   RA   R@   RK   Ra   (    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR    <   s&   			
		
	R>   c           B   s   e  Z d  „  Z RS(   c         C   s@   d d k  l } | i ƒ  p t d ƒ ‚ n t t |  ƒ f f S(   Ni   (   R-   sJ   Pickling an AuthenticationString object is disallowed for security reasons(   R/   R-   t   thread_is_spawningt	   TypeErrorR>   t   bytes(   R$   R-   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt
   __reduce__  s
    (   R!   Rb   Ri   (    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR>     s   t   _MainProcessc           B   s   e  Z d  „  Z RS(   c         C   sp   d |  _  t |  _ d |  _ d  |  _ d  |  _ t i d ƒ |  _	 t
 ƒ  |  _ t t i d ƒ ƒ |  _ d  |  _ d  S(   Nt   MainProcessi   i    (    (   R   R7   R   R#   R	   R   R   RN   R*   R   RM   R   R>   R   t   urandomR   R   (   R$   (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyR+     s    					(   R!   Rb   R+   (    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyRj     s   i   t   SIGt   _(   t   __all__R   RP   t   signalRN   t   patht   abspatht   getcwdt   ORIGINAL_DIRRS   R	   R   R   R   t   objectR    Rh   R>   Rj   R   RH   t   __dict__t   itemsR'   t   signum(    (    (    s9   P:\graphics\Tools\Python26\lib\multiprocessing\process.pyt   <module>	   s*   			
Æ	 