관리-도구
편집 파일: thread.cpython-36.opt-2.pyc
3 ��2a� � @ s� d Z ddlZddlmZ ddlZddlZddlZddlZddlZej � Z dadd� Zej e� G dd� de�Zd d � ZG dd� dej�ZdS ) z"Brian Quinlan (brian@sweetapp.com)� N)�_baseFc C sJ da ttj� �} x| D ]\}}|jd � qW x| D ]\}}|j� q2W d S )NT)� _shutdown�list�_threads_queues�items�put�join)r �t�q� r �+/opt/alt/python36/lib64/python3.6/thread.py�_python_exit! s r c @ s e Zd Zdd� Zdd� ZdS )� _WorkItemc C s || _ || _|| _|| _d S )N)�future�fn�args�kwargs)�selfr r r r r r r �__init__- s z_WorkItem.__init__c C sf | j j� sd S y| j| j| j�}W n2 tk rT } z| j j|� d } W Y d d }~X nX | j j|� d S )N)r Zset_running_or_notify_cancelr r r � BaseExceptionZ set_exceptionZ set_result)r �result�excr r r �run3 s z _WorkItem.runN)�__name__� __module__�__qualname__r r r r r r r , s r c C s| yRxL|j dd�}|d k r$|j� ~q| � }ts<|d ks<|jrJ|jd � d S ~qW W n$ tk rv tjjddd� Y nX d S )NT)�blockzException in worker)�exc_info)�getr r r r r ZLOGGERZcritical)Zexecutor_referenceZ work_queueZ work_item�executorr r r �_worker@ s r c @ sR e Zd Zej� jZddd�Zdd� Ze j jje_dd� Zd d d�Z e j j je _dS )�ThreadPoolExecutorN� c C sf |d krt j� pdd }|dkr(td��|| _tj� | _t� | _d| _ t j� | _|p^d| j � | _d S )N� � r z"max_workers must be greater than 0FzThreadPoolExecutor-%d)�os� cpu_count� ValueError�_max_workers�queueZQueue�_work_queue�set�_threadsr � threadingZLock�_shutdown_lock�_counter�_thread_name_prefix)r �max_workersZthread_name_prefixr r r r [ s zThreadPoolExecutor.__init__c O sN | j �> | jrtd��tj� }t||||�}| jj|� | j� |S Q R X d S )Nz*cannot schedule new futures after shutdown) r. r �RuntimeErrorr ZFuturer r* r �_adjust_thread_count)r r r r �f�wr r r �submitr s zThreadPoolExecutor.submitc C sz | j fdd�}t| j�}|| jk rvd| jp,| |f }tj|ttj | |�| j fd�}d|_ |j� | jj|� | j t |<