<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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	ƒ }z¨t
| 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