£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

e f)                 @   s[  d  d l  Z  d  d l Z d  d l Z d d l m Z g  Z Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z	 Gd
 d   d e  Z
 Gd d   d e  Z Gd d   d e j  Z Gd d   d e  Z e d d   e e  D  e _ e j d k rGd d   d e j  Z Gd d   d e j  Z Gd d   d e j  Z Gd d   d e  Z Gd d   d e  Z Gd d    d  e  Z i e   d! 6e   d" 6e   d# 6Z e e d!  Z nO Gd$ d   d e j  Z Gd% d   d e  Z i e   d" 6Z e e d"  Z d& d'   Z e j   Z d( d)   Z d* d+   Z d, d-   Z  d S).    N   )processc               @   s   e  Z d  Z d S)ProcessErrorN)__name__
__module____qualname__ r   r   </opt/alt/python34/lib64/python3.4/multiprocessing/context.pyr      s   r   c               @   s   e  Z d  Z d S)BufferTooShortN)r   r   r   r   r   r   r	   r
      s   r
   c               @   s   e  Z d  Z d S)TimeoutErrorN)r   r   r   r   r   r   r	   r      s   r   c               @   s   e  Z d  Z d S)AuthenticationErrorN)r   r   r   r   r   r   r	   r      s   r   c               @   s  e  Z d  Z e Z e Z e Z e Z e e j	  Z	 e e j
  Z
 d d   Z d d   Z d d d  Z d d	   Z d
 d   Z d d d  Z d d d  Z d d d  Z d d   Z d d d d  Z d d d  Z d d d  Z d d   Z d d f  d d d   Z d! d"   Z d# d$   Z d% d d& d'  Z d% d d( d)  Z d* d+   Z d, d-   Z d d. d/  Z d0 d1   Z  d2 d3   Z! d4 d5   Z" d d6 d7  Z# d8 d9 d:  Z$ d d; d<  Z% d= d>   Z& d S)?BaseContextc             C   s/   t  j   } | d k r' t d   n | Sd S)z(Returns the number of CPUs in the systemNzcannot determine number of cpus)os	cpu_countNotImplementedError)selfZnumr   r   r	   r   '   s    zBaseContext.cpu_countc             C   s3   d d l  m } | d |  j    } | j   | S)zReturns a manager associated with a running server process

        The managers methods such as `Lock()`, `Condition()` and `Queue()`
        can be used to create shared objects.
        r   )SyncManagerctx)Zmanagersr   get_contextstart)r   r   mr   r   r	   Manager/   s    
zBaseContext.ManagerTc             C   s   d d l  m } | |  S)z1Returns two connection object connected by a piper   )Pipe)
connectionr   )r   Zduplexr   r   r   r	   r   :   s    zBaseContext.Pipec             C   s#   d d l  m } | d |  j    S)z#Returns a non-recursive lock objectr   )Lockr   )synchronizer   r   )r   r   r   r   r	   r   ?   s    zBaseContext.Lockc             C   s#   d d l  m } | d |  j    S)zReturns a recursive lock objectr   )RLockr   )r   r   r   )r   r   r   r   r	   r   D   s    zBaseContext.RLockNc             C   s&   d d l  m } | | d |  j   S)zReturns a condition objectr   )	Conditionr   )r   r   r   )r   lockr   r   r   r	   r   I   s    zBaseContext.Conditionr   c             C   s&   d d l  m } | | d |  j   S)zReturns a semaphore objectr   )	Semaphorer   )r   r   r   )r   valuer   r   r   r	   r   N   s    zBaseContext.Semaphorec             C   s&   d d l  m } | | d |  j   S)z"Returns a bounded semaphore objectr   )BoundedSemaphorer   )r   r!   r   )r   r    r!   r   r   r	   r!   S   s    zBaseContext.BoundedSemaphorec             C   s#   d d l  m } | d |  j    S)zReturns an event objectr   )Eventr   )r   r"   r   )r   r"   r   r   r	   r"   X   s    zBaseContext.Eventc             C   s,   d d l  m } | | | | d |  j   S)zReturns a barrier objectr   )Barrierr   )r   r#   r   )r   ZpartiesactionZtimeoutr#   r   r   r	   r#   ]   s    zBaseContext.Barrierr   c             C   s&   d d l  m } | | d |  j   S)zReturns a queue objectr   )Queuer   )queuesr%   r   )r   maxsizer%   r   r   r	   r%   b   s    zBaseContext.Queuec             C   s&   d d l  m } | | d |  j   S)zReturns a queue objectr   )JoinableQueuer   )r&   r(   r   )r   r'   r(   r   r   r	   r(   g   s    zBaseContext.JoinableQueuec             C   s#   d d l  m } | d |  j    S)zReturns a queue objectr   )SimpleQueuer   )r&   r)   r   )r   r)   r   r   r	   r)   l   s    zBaseContext.SimpleQueuec             C   s/   d d l  m } | | | | | d |  j   S)zReturns a process pool objectr   )Poolcontext)Zpoolr*   r   )r   Z	processesZinitializerZinitargsZmaxtasksperchildr*   r   r   r	   r*   q   s    zBaseContext.Poolc             G   s   d d l  m } | | |  S)zReturns a shared objectr   )RawValue)sharedctypesr,   )r   typecode_or_typeargsr,   r   r   r	   r,   x   s    zBaseContext.RawValuec             C   s   d d l  m } | | |  S)zReturns a shared arrayr   )RawArray)r-   r0   )r   r.   size_or_initializerr0   r   r   r	   r0   }   s    zBaseContext.RawArrayr   c            G   s/   d d l  m } | | d | d |  j   | S)z$Returns a synchronized shared objectr   )Valuer   r   )r-   r2   r   )r   r.   r   r/   r2   r   r   r	   r2      s    zBaseContext.Valuec            C   s/   d d l  m } | | | d | d |  j   S)z#Returns a synchronized shared arrayr   )Arrayr   r   )r-   r3   r   )r   r.   r1   r   r3   r   r   r	   r3      s    zBaseContext.Arrayc             C   s?   t  j d k r; t t  d d  r; d d l m } |   n  d S)zCheck whether this is a fake forked process in a frozen executable.
        If so then run code specified by commandline and exit.
        win32frozenFr   )freeze_supportN)sysplatformgetattrspawnr6   )r   r6   r   r   r	   r6      s    !zBaseContext.freeze_supportc             C   s   d d l  m } |   S)zZReturn package logger -- if it does not already exist then
        it is created.
        r   )
get_logger)utilr;   )r   r;   r   r   r	   r;      s    zBaseContext.get_loggerc             C   s   d d l  m } | |  S)z8Turn on logging and add a handler which prints to stderrr   )log_to_stderr)r<   r=   )r   levelr=   r   r   r	   r=      s    zBaseContext.log_to_stderrc             C   s   d d l  m } d S)zVInstall support for sending connections and sockets
        between processes
        r   )r   N) r   )r   r   r   r   r	   allow_connection_pickling   s    z%BaseContext.allow_connection_picklingc             C   s   d d l  m } | |  d S)zSets the path to a python.exe or pythonw.exe binary used to run
        child processes instead of sys.executable when using the 'spawn'
        start method.  Useful for people embedding Python.
        r   )set_executableN)r:   rA   )r   
executablerA   r   r   r	   rA      s    zBaseContext.set_executablec             C   s   d d l  m } | |  d S)zkSet list of module names to try to load in forkserver process.
        This is really just a hint.
        r   )set_forkserver_preloadN)
forkserverrC   )r   Zmodule_namesrC   r   r   r	   rC      s    z"BaseContext.set_forkserver_preloadc             C   sQ   | d  k r |  Sy t  | } Wn" t k
 rB t d |   Yn X| j   | S)Nzcannot find context for %r)_concrete_contextsKeyError
ValueError_check_available)r   methodr   r   r   r	   r      s    
zBaseContext.get_contextFc             C   s   |  j  S)N)_name)r   
allow_noner   r   r	   get_start_method   s    zBaseContext.get_start_methodc             C   s   t  d   d  S)Nz+cannot set start method of concrete context)rG   )r   rI   r   r   r	   set_start_method   s    zBaseContext.set_start_methodc             C   s   d  S)Nr   )r   r   r   r	   rH      s    zBaseContext._check_available)'r   r   r   r   r
   r   r   staticmethodr   Zcurrent_processZactive_childrenr   r   r   r   r   r   r   r!   r"   r#   r%   r(   r)   r*   r,   r0   r2   r3   r6   r;   r=   r@   rA   rC   r   rL   rM   rH   r   r   r   r	   r      sF   	
r   c               @   s(   e  Z d  Z d Z e d d    Z d S)ProcessNc             C   s   t  j   j j |   S)N)_default_contextr   rO   _Popen)process_objr   r   r	   rQ      s    zProcess._Popen)r   r   r   _start_methodrN   rQ   r   r   r   r	   rO      s   rO   c                   sa   e  Z d  Z e Z d d   Z d   f d d  Z d d d  Z d d	 d
  Z d d   Z   S)DefaultContextc             C   s   | |  _  d  |  _ d  S)N)rP   _actual_context)r   r+   r   r   r	   __init__   s    	zDefaultContext.__init__Nc                sE   | d  k r1 |  j  d  k r* |  j |  _  n  |  j  St   j |  Sd  S)N)rU   rP   superr   )r   rI   )	__class__r   r	   r      s
    zDefaultContext.get_contextFc             C   sZ   |  j  d  k	 r% | r% t d   n  | d  k rD | rD d  |  _  d  S|  j |  |  _  d  S)Nzcontext has already been set)rU   RuntimeErrorr   )r   rI   Zforcer   r   r	   rM      s    	zDefaultContext.set_start_methodc             C   s2   |  j  d  k r( | r d  S|  j |  _  n  |  j  j S)N)rU   rP   rJ   )r   rK   r   r   r	   rL      s
    zDefaultContext.get_start_methodc             C   sJ   t  j d k r d g Sd d l m } | j r< d d d g Sd d g Sd  S)Nr4   r:   r   )	reductionforkrD   )r7   r8   r?   rZ   HAVE_SEND_HANDLE)r   rZ   r   r   r	   get_all_start_methods   s    	z$DefaultContext.get_all_start_methods)	r   r   r   rO   rV   r   rM   rL   r]   r   r   )rX   r	   rT      s   rT   c             c   s%   |  ] } | d  d k r | Vq d S)r   _Nr   ).0xr   r   r	   	<genexpr>   s    ra   r4   c               @   s(   e  Z d  Z d Z e d d    Z d S)ForkProcessr[   c             C   s   d d l  m } | |   S)Nr   )Popen)Z
popen_forkrc   )rR   rc   r   r   r	   rQ     s    zForkProcess._PopenN)r   r   r   rS   rN   rQ   r   r   r   r	   rb     s   rb   c               @   s(   e  Z d  Z d Z e d d    Z d S)SpawnProcessr:   c             C   s   d d l  m } | |   S)Nr   )rc   )Zpopen_spawn_posixrc   )rR   rc   r   r   r	   rQ     s    zSpawnProcess._PopenN)r   r   r   rS   rN   rQ   r   r   r   r	   rd     s   rd   c               @   s(   e  Z d  Z d Z e d d    Z d S)ForkServerProcessrD   c             C   s   d d l  m } | |   S)Nr   )rc   )Zpopen_forkserverrc   )rR   rc   r   r   r	   rQ     s    zForkServerProcess._PopenN)r   r   r   rS   rN   rQ   r   r   r   r	   re     s   re   c               @   s   e  Z d  Z d Z e Z d S)ForkContextr[   N)r   r   r   rJ   rb   rO   r   r   r   r	   rf     s   rf   c               @   s   e  Z d  Z d Z e Z d S)SpawnContextr:   N)r   r   r   rJ   rd   rO   r   r   r   r	   rg     s   rg   c               @   s(   e  Z d  Z d Z e Z d d   Z d S)ForkServerContextrD   c             C   s,   d d l  m } | j s( t d   n  d  S)Nr   )rZ   z%forkserver start method not available)r?   rZ   r\   rG   )r   rZ   r   r   r	   rH   &  s    	z"ForkServerContext._check_availableN)r   r   r   rJ   re   rO   rH   r   r   r   r	   rh   #  s   rh   r[   r:   rD   c               @   s(   e  Z d  Z d Z e d d    Z d S)rd   r:   c             C   s   d d l  m } | |   S)Nr   )rc   )Zpopen_spawn_win32rc   )rR   rc   r   r   r	   rQ   6  s    zSpawnProcess._PopenN)r   r   r   rS   rN   rQ   r   r   r   r	   rd   4  s   c               @   s   e  Z d  Z d Z e Z d S)rg   r:   N)r   r   r   rJ   rd   rO   r   r   r   r	   rg   ;  s   c             C   s   t  |  t _ d  S)N)rE   rP   rU   )rI   r   r   r	   _force_start_methodH  s    ri   c               C   s   t  t d d   S)Nspawning_popen)r9   _tlsr   r   r   r	   get_spawning_popenQ  s    rl   c             C   s   |  t  _ d  S)N)rk   rj   )popenr   r   r	   set_spawning_popenT  s    rn   c             C   s/   t    d  k r+ t d t |   j   n  d  S)NzF%s objects should only be shared between processes through inheritance)rl   rY   typer   )objr   r   r	   assert_spawningW  s    rq   )!r   r7   Z	threadingr?   r   __all__	Exceptionr   r
   r   r   objectr   ZBaseProcessrO   rT   listdirr8   rb   rd   re   rf   rg   rh   rE   rP   ri   Zlocalrk   rl   rn   rq   r   r   r   r	   <module>   sD   ("

