a
XC?h¥! ã @ sÒ d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ g d¢Ze edƒZ
ejejfZ
ddd „ iZe jd
kr˜d dlZd dlZe ejejdœ¡ G dd
„ d
eƒZeƒ ZejZejZejZejZdd„ ZdS )é Né )Úspawn)Úutil)Úensure_runningÚregisterÚ
unregisterÚpthread_sigmaskZnoopc C s d S ©N© r
r
r
úE/opt/alt/python39/lib64/python3.9/multiprocessing/resource_tracker.pyÚ! ó r Úposix)Z semaphoreZ
shared_memoryc @ sL e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d
„ Zdd„ Zd
d„ Z dd„ Z
dS )ÚResourceTrackerc C s t ¡ | _d | _d | _d S r )Ú threadingZLockÚ_lockÚ_fdÚ_pid©Úselfr
r
r Ú__init__0 s
zResourceTracker.__init__c C sj | j P | jd u r"W d ƒ d S t | j¡ d | _t | jd¡ d | _W d ƒ n1 s\0 Y d S )Nr )r r ÚosÚcloseÚwaitpidr r r
r
r Ú_stop5 s
zResourceTracker._stopc C s | ¡ | jS r )r r r r
r
r ÚgetfdB s zResourceTracker.getfdc C s¦ | j ˆ | jdur~| ¡ r,W d ƒ dS t | j¡ z| jdurRt | jd¡ W n tyf Y n0 d| _d| _t d¡ g }z|
tj
¡ ¡ W n ty¨ Y n0 d}t ¡ \}}zºz†|
|¡ t ¡ }|gt ¡ }|d|| g7 }z:trt tjt¡ t |||¡}W tr@t tjt¡ ntr>t tjt¡ 0 W n t |¡ ‚ Y n0 || _|| _W t |¡ nt |¡ 0 W d ƒ n1 s˜0 Y dS )z¬Make sure that resource tracker process is running.
This can be run from any process. Usually a child process will use
the resource created by its parent.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 Zget_executabler Z_args_from_interpreter_flagsÚ
_HAVE_SIGMASKÚsignalr Ú SIG_BLOCKÚ_IGNORED_SIGNALSZspawnv_passfdsÚSIG_UNBLOCK)r Zfds_to_passÚcmdÚrÚwZexeÚargsÚpidr
r
r r F sN
ÿ
zResourceTracker.ensure_runningc C s0 zt | jd¡ W n ty& Y dS 0 dS dS )z;Check that the pipe has not been closed by sending a probe.s
PROBE:0:noop
FTN)r Úwriter ÚOSErrorr r
r
r r † s
zResourceTracker._check_alivec C s | d||¡ dS )z0Register name of resource with resource tracker.ÚREGISTERN©Ú_send©r ÚnameÚrtyper
r
r r ‘ s zResourceTracker.registerc C s | d||¡ dS )z2Unregister name of resource with resource tracker.Ú
UNREGISTERNr3 r5 r
r
r r • s zResourceTracker.unregisterc C sb | ¡ d |||¡ d¡}t|ƒdkr0tdƒ‚t | j|¡}|t|ƒks^J d |t|ƒ¡ƒ‚d S )Nz{0}:{1}:{2}
Úasciii z
name too longznbytes {0:n} but len(msg) {1:n})r ÚformatÚencodeÚlenÚ
ValueErrorr r0 r )r r+ r6 r7 ÚmsgÚnbytesr
r
r r4 ™ s ÿzResourceTracker._sendN)Ú__name__Ú
__module__Ú__qualname__r r r r r r r r4 r
r
r
r r . s
@r c
C sÐ t t jt j¡ t t jt j¡ tr2t t jt¡ tj tj
fD ]$}z| ¡ W q> ty` Y q>0 q>dd„ t
¡ D ƒ}z¨t| dƒà}|D ]Ê}z| ¡ d¡ d¡\}}}t
|d¡}|du rÒtd|› d|› ƒ‚|d krê|| |¡ n2|d
kr|| |¡ n|dkrntd| ƒ‚W qŠ tyR ztjt ¡ Ž W n Y n0 Y qŠ0 qŠW d ƒ n1 sl0 Y W | ¡ D ]ž\}}|r¾zt d
t|ƒ|f ¡ W n ty¼ Y n0 |D ]X}zNzt
| |ƒ W n8 ty } zt d|| f ¡ W Y d} ~ n
d} ~ 0 0 W n0 qÂq€nª| ¡ D ]ž\}}|rhzt d
t|ƒ|f ¡ W n tyf Y n0 |D ]X}zNzt
| |ƒ W n8 tyº } zt d|| f ¡ W Y d} ~ n
d} ~ 0 0 W n0 qlq*0 dS )zRun resource tracker.c S s i | ]}|t ƒ “qS r
)Úset)Ú.0r7 r
r
r Ú
¹ r
zmain..Úrbr9 ú:NzCannot register z. for automatic cleanup: unknown resource type r2 r8 ZPROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: %r: %s)r' ÚSIGINTÚSIG_IGNÚSIGTERMr&