£Á°è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>
B
    YI~d[                 @   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 ddlmZ dddgZ	G dd	 d	e
Ze ZejZejZejZejZd
d ZdS )    N   )spawn)utilensure_runningregister
unregisterc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )SemaphoreTrackerc             C   s   t  | _d | _d | _d S )N)	threadingZLock_lock_fd_pid)self r   F/opt/alt/python37/lib64/python3.7/multiprocessing/semaphore_tracker.py__init__   s    
zSemaphoreTracker.__init__c             C   s   |    | jS )N)r   r   )r   r   r   r   getfd"   s    zSemaphoreTracker.getfdc       	   
   C   s  | j  | jd k	rRt| jtj\}}|s0d S t| j d | _d | _td g }y|	t
j  W n tk
r~   Y nX d}t \}}zlyB|	| t }|gt  }|d|| g7 }t|||}W n   t|  Y nX || _|| _W d t| X W d Q R X d S )NzWsemaphore_tracker: process died unexpectedly, relaunching.  Some semaphores might leak.z;from multiprocessing.semaphore_tracker import main;main(%d)z-c)r
   r   oswaitpidWNOHANGcloser   warningswarnappendsysstderrfileno	Exceptionpiper   Zget_executabler   Z_args_from_interpreter_flagsZspawnv_passfds)	r   pidstatusZfds_to_passcmdrwZexeargsr   r   r   r   &   s8    





zSemaphoreTracker.ensure_runningc             C   s   |  d| d S )NZREGISTER)_send)r   namer   r   r   r   Q   s    zSemaphoreTracker.registerc             C   s   |  d| d S )NZ
UNREGISTER)r$   )r   r%   r   r   r   r   U   s    zSemaphoreTracker.unregisterc             C   s@   |    d||d}t|dkr.tdt| j|}d S )Nz{0}:{1}
asciii   zname too long)r   formatencodelen
ValueErrorr   writer   )r   r    r%   msgnbytesr   r   r   r$   Y   s    zSemaphoreTracker._sendN)	__name__
__module____qualname__r   r   r   r   r   r$   r   r   r   r   r      s   +r   c             C   s  t  t jt j t  t jt j x6tjtjfD ]&}y|  W q. tk
rR   Y q.X q.W t	 }zt
| d}x|D ]}yJ| d\}}|dkr|| n |dkr|| ntd| W qr tk
r   ytjt   W n   Y nX Y qrX qrW W d Q R X W d |r<ytdt|  W n tk
r:   Y nX xf|D ]^}zT|d}yt| W n6 tk
r } ztd||f  W d d }~X Y nX W d X qBW X d S )	Nrb   :s   REGISTERs
   UNREGISTERzunrecognized command %rzRsemaphore_tracker: There appear to be %d leaked semaphores to clean up at shutdownr&   zsemaphore_tracker: %r: %s)signalSIGINTSIG_IGNSIGTERMr   stdinstdoutr   r   setopenstripsplitaddremoveRuntimeError
excepthookexc_infor   r   r)   decode_multiprocessingZ
sem_unlink)fdfcacheliner    r%   er   r   r   mainl   sJ    



(rI   )r   r3   r   r	   r   rC    r   r   __all__objectr   Z_semaphore_trackerr   r   r   r   rI   r   r   r   r   <module>   s   
J