HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/concurrent/futures/__pycache__/thread.cpython-39.pyc
a

kx�g� �@s�dZdZddlmZddlZddlZddlZddlZddlZddl	Z	e�
�Zdae�
�Zdd�Ze�e�Gdd	�d	e�Zd
d�ZGdd
�d
ej�ZGdd�dej�ZdS)zImplements ThreadPoolExecutor.z"Brian Quinlan (brian@sweetapp.com)�)�_baseNFcCsft�daWd�n1s0Ytt���}|D]\}}|�d�q8|D]\}}|��qPdS�NT)�_global_shutdown_lock�	_shutdown�list�_threads_queues�items�put�join)r�t�q�r
�//usr/lib/python3.9/concurrent/futures/thread.py�_python_exits"rc@s&eZdZdd�Zdd�Zeej�ZdS)�	_WorkItemcCs||_||_||_||_dS�N)�future�fn�args�kwargs)�selfrrrrr
r
r�__init__)sz_WorkItem.__init__c
Csl|j��sdSz|j|ji|j��}Wn4tyZ}z|j�|�d}WYd}~nd}~00|j�|�dSr)rZset_running_or_notify_cancelrrr�
BaseException�
set_exceptionZ
set_result)r�result�excr
r
r�run/s
z
_WorkItem.runN)	�__name__�
__module__�__qualname__rr�classmethod�types�GenericAlias�__class_getitem__r
r
r
rr(s
rcCs�|durPz||�Wn:tyNtjjddd�|�}|durH|��YdS0zx|jdd�}|dur�|��~|�}|dur�|j��~qR|�}t	s�|dus�|j	r�|dur�d|_	|�
d�WdS~qRWn"ty�tjjddd�Yn0dS)NzException in initializer:T)�exc_info)�blockzException in worker)rrZLOGGERZcritical�_initializer_failed�getr�_idle_semaphore�releaserr	)Zexecutor_referenceZ
work_queue�initializer�initargsZexecutor�	work_itemr
r
r�_worker?s8

r-c@seZdZdZdS)�BrokenThreadPoolzR
    Raised when a worker thread in a ThreadPoolExecutor failed initializing.
    N)rrr�__doc__r
r
r
rr.jsr.c@s`eZdZe��jZddd�Zdd�Ze	j
jje_dd	�Zd
d�Z
dd
d�dd�Ze	j
jje_dS)�ThreadPoolExecutorN�r
cCs�|durtdt��pdd�}|dkr.td��|durFt|�sFtd��||_t��|_	t
�d�|_t
�|_d|_d|_t
��|_|p�d	|��|_||_||_dS)
a�Initializes a new ThreadPoolExecutor instance.

        Args:
            max_workers: The maximum number of threads that can be used to
                execute the given calls.
            thread_name_prefix: An optional name prefix to give our threads.
            initializer: A callable used to initialize worker threads.
            initargs: A tuple of arguments to pass to the initializer.
        N� ��rz"max_workers must be greater than 0zinitializer must be a callableFzThreadPoolExecutor-%d)�min�os�	cpu_count�
ValueError�callable�	TypeError�_max_workers�queueZSimpleQueue�_work_queue�	threadingZ	Semaphorer(�set�_threads�_brokenr�Lock�_shutdown_lock�_counter�_thread_name_prefix�_initializer�	_initargs)rZmax_workersZthread_name_prefixr*r+r
r
rrus$


�zThreadPoolExecutor.__init__c	Os�|j��t�v|jrt|j��|jr,td��tr8td��t��}t||||�}|j	�
|�|��|Wd�Wd�S1s�0YWd�n1s�0YdS)Nz*cannot schedule new futures after shutdownz6cannot schedule new futures after interpreter shutdown)rCrrAr.r�RuntimeErrorrZFuturerr=r	�_adjust_thread_count)rrrr�f�wr
r
r�submit�s
zThreadPoolExecutor.submitcCs�|jjdd�rdS|jfdd�}t|j�}||jkr�d|jp>||f}tj|t	t
�||�|j|j|j
fd�}|��|j�|�|jt|<dS)Nr)ZtimeoutcSs|�d�dSr)r	)�_rr
r
r�
weakref_cb�sz;ThreadPoolExecutor._adjust_thread_count.<locals>.weakref_cbz%s_%d)�name�targetr)r(�acquirer=�lenr@r;rEr>ZThreadr-�weakref�refrFrG�start�addr)rrNZnum_threadsZthread_namerr
r
rrI�s$


�
��z'ThreadPoolExecutor._adjust_thread_countc	Cst|j�Zd|_z|j��}Wntjy4YqRYn0|dur|j�t|j��qWd�n1sf0YdS)NzBA thread initializer failed, the thread pool is not usable anymore)	rCrAr=�
get_nowaitr<�Emptyrrr.)rr,r
r
rr&�s
z&ThreadPoolExecutor._initializer_failedTF)�cancel_futuresc	Cs�|j�bd|_|rNz|j��}Wntjy8YqNYn0|dur|j��q|j�d�Wd�n1sn0Y|r�|j	D]}|�
�q�dSr)rCrr=rWr<rXrZcancelr	r@r
)r�waitrYr,rr
r
r�shutdown�s
*
zThreadPoolExecutor.shutdown)Nr1Nr
)T)rrr�	itertools�count�__next__rDrrLr�Executorr/rIr&r[r
r
r
rr0ps
�
&
r0)r/�
__author__Zconcurrent.futuresrr\r<r>r!rSr6�WeakKeyDictionaryrrrBrrZ_register_atexit�objectrr-ZBrokenExecutorr.r_r0r
r
r
r�<module>s"
+