o
0i
# @ s d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ g dZe edZ
ejejfZ
ddd iZe jd
krWd dlZd dlZe edrOedeji ed
eji G dd deZe ZejZejZejZejZdd ZdS ) N )spawn)util)ensure_runningregister
unregisterpthread_sigmaskZnoopc C s d S N r
r
r
G/opt/alt/python310/lib64/python3.10/multiprocessing/resource_tracker.py! s r posix
sem_unlinkZ 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_pidselfr
r
r __init__8 s
zResourceTracker.__init__c C sn | j * | jd u r W d d S t| j d | _t| jd d | _W d d S 1 s0w Y d S )Nr )r r osclosewaitpidr r r
r
r _stop= s
"zResourceTracker._stopc C s | | jS r )r r r r
r
r getfdJ s zResourceTracker.getfdc C s | j | jdur?| r W d dS t| j z| jdur)t| jd W n ty3 Y nw d| _d| _t d g }z
|
tj
W n tyT Y nw d}t \}}zXzA|
| t }|gt }|d|| g7 }ztrttjt t|||}W trttjt ntrttjt w w W n t| || _|| _W t| nt| w W d dS 1 sw Y dS )zMake 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 ChildProcessErrorwarningswarnappendsysstderrfileno Exceptionpiper Zget_executabler Z_args_from_interpreter_flags
_HAVE_SIGMASKsignalr SIG_BLOCK_IGNORED_SIGNALSZspawnv_passfdsSIG_UNBLOCK)r Zfds_to_passcmdrwZexeargspidr
r
r r N s^
"zResourceTracker.ensure_runningc C s* z
t | jd W dS ty Y dS w )z;Check that the pipe has not been closed by sending a probe.s
PROBE:0:noop
FT)r writer OSErrorr r
r
r r s zResourceTracker._check_alivec C | d|| dS )z0Register name of resource with resource tracker.REGISTERN_sendr namertyper
r
r r zResourceTracker.registerc C r2 )z2Unregister name of resource with resource tracker.
UNREGISTERNr4 r6 r
r
r r r9 zResourceTracker.unregisterc C sb | d|||d}t|dkrtdt| j|}|t|ks/J d|t|d S )Nz{0}:{1}:{2}
asciii zmsg too longznbytes {0:n} but len(msg) {1:n})r formatencodelen
ValueErrorr r0 r )r r+ r7 r8 msgnbytesr
r
r r5 s
zResourceTracker._sendN)__name__
__module____qualname__r r r r r r r r5 r
r
r
r r 6 s
@r c
C s t t jt j t t jt j trt t jt tj tj
fD ]}z| W q ty0 Y qw dd t
D }zt| dj}|D ]_}zF| dd\}}}t
|d}|du rgtd| d| |d krs|| | n|d
kr|| | n|dkrntd| W qC ty z tjt W n Y Y qCw W d n1 sw Y W | D ]I\}}|rz
td
t||f W n ty Y nw |D ])}z&zt
| | W n ty } ztd|| f W Y d} ~ nd} ~ ww W qw qdS | D ]N\}}|r&z
td
t||f W n
ty% Y nw |D ]+}z(zt
| | W n tyO } ztd|| f W Y d} ~ nd} ~ ww W q(w qw )zRun resource tracker.c S s i | ]}|t qS r
)set).0r8 r
r
r