<!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>
U
    e5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mZ ddlmZ dddgZe	edƒZ
ejejfZd	d
d„ iZe jdkršd dlZd dlZe ejejdœ¡ 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Ú
unregisterÚpthread_sigmaskZnoopc                   C   s   d S ©N© r
   r
   r
   ú8/usr/lib64/python3.8/multiprocessing/resource_tracker.pyÚ<lambda>!   ó    r   Úposix)Z	semaphoreZshared_memoryc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚResourceTrackerc                 C   s   t  ¡ | _d | _d | _d S r	   )Ú	threadingZLockÚ_lockÚ_fdÚ_pid©Úselfr
   r
   r   Ú__init__0   s    
zResourceTracker.__init__c              	   C   sT   | j D | jd kr W 5 Q R £ d S t | j¡ d | _t | jd¡ d | _W 5 Q R X d S )Nr   )r   r   ÚosÚcloseÚwaitpidr   r   r
   r
   r   Ú_stop5   s    
zResourceTracker._stopc                 C   s   |   ¡  | jS r	   )r   r   r   r
   r
   r   ÚgetfdB   s    zResourceTracker.getfdc                 C   st  | j b | jd k	r~|  ¡ r*W 5 Q R £ d S t | j¡ z| jd k	rPt | jd¡ W n tk
rf   Y nX d | _d | _t 	d¡ g }z| 
tj ¡ ¡ W n tk
rª   Y nX d}t ¡ \}}zœzr| 
|¡ t ¡ }|gt ¡  }|d|| g7 }z&trt tjt¡ t |||¡}W 5 tr,t tjt¡ X W n   t |¡ ‚ Y nX || _|| _W 5 t |¡ X W 5 Q R X d S )Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)r   r   Ú_check_aliver   r   r   r   ÚChildProcessErrorÚwarningsÚwarnÚappendÚsysÚstderrÚfilenoÚ	ExceptionÚpiper   Zget_executabler   Z_args_from_interpreter_flagsÚ_HAVE_SIGMASKÚsignalr   ÚSIG_UNBLOCKÚ_IGNORED_SIGNALSÚ	SIG_BLOCKZspawnv_passfds)r   Zfds_to_passÚcmdÚrÚwZexeÚargsÚpidr
   r
   r   r   F   sJ    






zResourceTracker.ensure_runningc                 C   s2   zt  | jd¡ W n tk
r(   Y dS X dS d S )Ns   PROBE:0:noop
FT)r   Úwriter   ÚOSErrorr   r
   r
   r   r   †   s
    zResourceTracker._check_alivec                 C   s   |   d||¡ d S )NÚREGISTER©Ú_send©r   ÚnameÚrtyper
   r
   r   r   ‘   s    zResourceTracker.registerc                 C   s   |   d||¡ d S )NÚ
UNREGISTERr3   r5   r
   r
   r   r   •   s    zResourceTracker.unregisterc                 C   sB   |   ¡  d |||¡ d¡}t|ƒdkr0tdƒ‚t | j|¡}d S )Nz{0}:{1}:{2}
Úasciii   zname too long)r   ÚformatÚencodeÚlenÚ
ValueErrorr   r0   r   )r   r+   r6   r7   ÚmsgÚnbytesr
   r
   r   r4   ™   s    zResourceTracker._sendN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r4   r
   r
   r
   r   r   .   s   @r   c           
      C   s  t   t jt j¡ t   t jt j¡ tr2t  t jt¡ tj	tj
fD ]&}z| ¡  W q> tk
rb   Y q>X q>dd„ t ¡ D ƒ}zìt| dƒØ}|D ]Ì}z| ¡  d¡ d¡\}}}t |d ¡}	|	d krÒtd|› d	|› ƒ‚|d
krê||  |¡ n2|dkr||  |¡ n|dkrntd| ƒ‚W qŠ tk
rT   ztjt ¡ Ž  W n   Y nX Y qŠX qŠW 5 Q R X W 5 | ¡ D ]ž\}}|r®zt dt|ƒ|f ¡ W n tk
r¬   Y nX |D ]V}zLzt| |ƒ W n6 tk
rþ } zt d||f ¡ W 5 d }~X Y nX W 5 X q²qnX d S )Nc                 S   s   i | ]}|t ƒ “qS r
   )Úset)Ú.0r7   r
   r
   r   Ú
<dictcomp>¹   s      zmain.<locals>.<dictcomp>zQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: %r: %sÚrbr9   ú:zCannot register z. for automatic cleanup: unknown resource type r2   r8   ZPROBEzunrecognized command %r)r'   ÚSIGINTÚSIG_IGNÚSIGTERMr&   r   r(   r)   r!   ÚstdinÚstdoutr   r$   Ú_CLEANUP_FUNCSÚkeysÚitemsr   r   r<   ÚopenÚstripÚdecodeÚsplitÚgetr=   ÚaddÚremoveÚRuntimeErrorÚ
excepthookÚexc_info)
ÚfdÚfÚcacher7   Zrtype_cacher6   ÚeÚliner+   Zcleanup_funcr
   r
   r   Úmain«   s^    ÿ


þ
(r_   )r   r'   r!   r   r   Ú r   r   Ú__all__Úhasattrr&   rH   rJ   r)   rM   r6   Z_multiprocessingZ_posixshmemÚupdateZ
sem_unlinkZ
shm_unlinkÚobjectr   Z_resource_trackerr   r   r   r   r_   r
   r
   r
   r   Ú<module>   s4   

 ÿ
þw