Your IP : 18.116.13.192


Current Path : /opt/alt/python38/lib64/python3.8/concurrent/futures/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/concurrent/futures/__pycache__/thread.cpython-38.pyc

U

i�f@"�@s�dZdZddlZddlmZddlZddlZddlZddlZddl	Z	e�
�Zdadd�Z
e�e
�Gdd	�d	e�Zd
d�ZGdd
�d
ej�ZGdd�dej�ZdS)zImplements ThreadPoolExecutor.z"Brian Quinlan (brian@sweetapp.com)�N)�_baseFcCsBdatt���}|D]\}}|�d�q|D]\}}|��q,dS�NT)�	_shutdown�list�_threads_queues�items�put�join)r�t�q�r�>/opt/alt/python38/lib64/python3.8/concurrent/futures/thread.py�_python_exit!src@seZdZdd�Zdd�ZdS)�	_WorkItemcCs||_||_||_||_dS�N)�future�fn�args�kwargs)�selfrrrrrrr
�__init__.sz_WorkItem.__init__c
Csf|j��sdSz|j|j|j�}Wn2tk
rT}z|j�|�d}W5d}~XYnX|j�|�dSr)rZset_running_or_notify_cancelrrr�
BaseException�
set_exceptionZ
set_result)r�result�excrrr
�run4s
z
_WorkItem.runN)�__name__�
__module__�__qualname__rrrrrr
r-srcCs�|dk	rRz||�Wn<tk
rPtjjddd�|�}|dk	rJ|��YdSXzx|jdd�}|dk	r�|��~|�}|dk	r�|j��~qT|�}t	s�|dks�|j	r�|dk	r�d|_	|�
d�WdS~qTWn$tk
r�tjjddd�YnXdS)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
�_workerBs8

r(c@seZdZdZdS)�BrokenThreadPoolzR
    Raised when a worker thread in a ThreadPoolExecutor failed initializing.
    N)rrr�__doc__rrrr
r)msr)c@sfeZdZe��jZddd�Zdd�Ze	j
jje_e	j
jje_dd	�Z
d
d�Zdd
d�Ze	j
jje_dS)�ThreadPoolExecutorN�rcCs�|dkrtdt��pdd�}|dkr.td��|dk	rFt|�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�_brokenrZLock�_shutdown_lock�_counter�_thread_name_prefix�_initializer�	_initargs)rZmax_workersZthread_name_prefixr%r&rrr
rxs$


�zThreadPoolExecutor.__init__c
Os�t|�dkr|^}}}nV|s&td��nHd|krZ|�d�}|^}}ddl}|jdtdd�ntdt|�d��|j�f|jr�t|j��|j	r�t
d	��t	r�t
d
��t��}t
||||�}|j�|�|��|W5QR�SQRXdS)N�zDdescriptor 'submit' of 'ThreadPoolExecutor' object needs an argumentrrz.Passing 'fn' as keyword argument is deprecated)�
stacklevelz6submit expected at least 1 positional argument, got %dr.z*cannot schedule new futures after shutdownz6cannot schedule new futures after interpreter shutdown)�lenr5�pop�warnings�warn�DeprecationWarningr=r<r)r�RuntimeErrorrZFuturerr8r�_adjust_thread_count)rrrrrF�f�wrrr
�submit�s6

�
�
zThreadPoolExecutor.submitcCs�|jjdd�rdS|jfdd�}t|j�}||jkr�d|jp>||f}tj|t	t
�||�|j|j|j
fd�}d|_|��|j�|�|jt|<dS)Nr)ZtimeoutcSs|�d�dSr)r)�_rrrr
�
weakref_cb�sz;ThreadPoolExecutor._adjust_thread_count.<locals>.weakref_cbz%s_%d)�name�targetrT)r#�acquirer8rDr;r6r?r9ZThreadr(�weakref�refr@rAZdaemon�start�addr)rrOZnum_threadsZthread_namer
rrr
rJ�s&


�
��z'ThreadPoolExecutor._adjust_thread_countc	Csb|j�Rd|_z|j��}Wntjk
r6YqTYnX|dk	r|j�t|j��qW5QRXdS)NzBA thread initializer failed, the thread pool is not usable anymore)	r=r<r8Z
get_nowaitr7ZEmptyrrr))rr'rrr
r!�s
z&ThreadPoolExecutor._initializer_failedTc	Cs@|j�d|_|j�d�W5QRX|r<|jD]}|��q.dSr)r=rr8rr;r	)r�waitr
rrr
�shutdown�s
zThreadPoolExecutor.shutdown)Nr,Nr)T)rrr�	itertools�count�__next__r>rrMr�Executor�__text_signature__r*rJr!rXrrrr
r+ss
�
& 
r+)r*�
__author__�atexitZconcurrent.futuresrrYr7r9rSr1�WeakKeyDictionaryrrr�register�objectrr(ZBrokenExecutorr)r\r+rrrr
�<module>s 	
+

?>