Viewing File: /opt/alt/python38/lib64/python3.8/concurrent/futures/__pycache__/process.cpython-38.opt-2.pyc

U

,azn@sdZddlZddlZddlmZddlZddlmZddlZddl	Zddl
mZddlZddl
Z
ddlmZddlZddlZddlZe
ZdaGdd	d	Zd
dZdZd
ZGdddeZGdddZddZGdddeZGdddeZ GdddeZ!GdddeZ"ddZ#ddZ$d0d d!Z%d"d#Z&d$d%Z'd&d'Z(da)da*d(d)Z+d*d+Z,Gd,d-d-ej-Z.Gd.d/d/ej/Z0e1edS)1z"Brian Quinlan (brian@sweetapp.com)N)_base)Full)Queue)partialFc@s,eZdZddZddZddZddZd	S)

_ThreadWakeupcCstjdd\|_|_dS)NF)Zduplex)mpZPipe_reader_writerselfr?/opt/alt/python38/lib64/python3.8/concurrent/futures/process.py__init__Rsz_ThreadWakeup.__init__cCs|j|jdSN)r	closerr
rrr
rUs
z_ThreadWakeup.closecCs|jddS)N)r	Z
send_bytesr
rrr
wakeupYsz_ThreadWakeup.wakeupcCs|jr|jqdSr)rZpollZ
recv_bytesr
rrr
clear\s
z_ThreadWakeup.clearN)__name__
__module____qualname__rrrrrrrr
rQsrcCs@datt}|D]\}}|q|D]\}}|q*dSNT)_global_shutdownlist_threads_wakeupsitemsrjoin)r_
thread_wakeuptrrr
_python_exitas
r =c@seZdZddZddZdS)_RemoteTracebackcCs
||_dSrtb)rr%rrr
rzsz_RemoteTraceback.__init__cCs|jSrr$r
rrr
__str__|sz_RemoteTraceback.__str__N)rrrrr&rrrr
r#ysr#c@seZdZddZddZdS)_ExceptionWithTracebackcCs0tt|||}d|}||_d||_dS)Nz

"""
%s""")	tracebackformat_exceptiontyperexcr%)rr,r%rrr
rs
z _ExceptionWithTraceback.__init__cCst|j|jffSr)_rebuild_excr,r%r
rrr

__reduce__sz"_ExceptionWithTraceback.__reduce__N)rrrrr.rrrr
r'sr'cCst||_|Sr)r#	__cause__)r,r%rrr
r-s
r-c@seZdZddZdS)	_WorkItemcCs||_||_||_||_dSr)futurefnargskwargs)rr1r2r3r4rrr
rsz_WorkItem.__init__Nrrrrrrrr
r0sr0c@seZdZdddZdS)_ResultItemNcCs||_||_||_dSr)work_id	exceptionresult)rr7r8r9rrr
rsz_ResultItem.__init__)NNr5rrrr
r6sr6c@seZdZddZdS)	_CallItemcCs||_||_||_||_dSr)r7r2r3r4)rr7r2r3r4rrr
rsz_CallItem.__init__Nr5rrrr
r:sr:cs*eZdZdfdd	ZfddZZS)
_SafeQueuercs||_tj||ddS)N)ctx)pending_work_itemssuperr)rmax_sizer<r=	__class__rr
rsz_SafeQueue.__init__cslt|trZtt|||j}tdd||_	|j
|jd}|dk	rh|j
|nt||dS)Nz

"""
{}"""r()
isinstancer:r)r*r+
__traceback__r#formatrr/r=popr7r1
set_exceptionr>_on_queue_feeder_error)reobjr%	work_itemr@rr
rGs
z!_SafeQueue._on_queue_feeder_error)r)rrrrrG
__classcell__rrr@r
r;sr;cgs,t|}tt||}|s dS|VqdSr)ziptuple	itertoolsislice)	chunksize	iterablesitchunkrrr
_get_chunkss
rTcsfdd|DS)Ncsg|]}|qSrr).0r3r2rr

<listcomp>sz"_process_chunk.<locals>.<listcomp>r)r2rSrrVr
_process_chunks	rXc
Cs^z|t|||dWn@tk
rX}z"t||j}|t||dW5d}~XYnXdS)N)r9r8r8)putr6
BaseExceptionr'rC)result_queuer7r9r8rHr,rrr
_sendback_results
r]c
Cs|dk	r<z||Wn&tk
r:tjjdddYdSX|jdd}|dkrb|tdSz|j|j	|j
}Wn>tk
r}z t||j}t
||j|dW5d}~XYnXt
||j|d~~q<dS)NzException in initializer:T)exc_infoblockrY)r9)r[rZLOGGERZcriticalgetrZosgetpidr2r3r4r'rCr]r7)
call_queuer\initializerinitargsZ	call_itemrrHr,rrr
_process_workers$
"rhcCsv|rdSz|jdd}Wntjk
r4YdSX||}|jrh|jt||j|j	|j
ddq||=qqdS)NFr_T)ZfullraqueueZEmptyr1Zset_running_or_notify_cancelrZr:r2r3r4)r=Zwork_idsrdr7rJrrr
_add_call_item_to_queues"
rjc
s>dfdd}fdd}|j}	|j}
|	|
g}t||ddD}tj||}
d}d}|	|
krz|	}d}Wqtk
r}zt	t
|||j}W5d}~XYqXn|
|
krd}d}||rl|dk	rd	_
d_dtd
}|dk	r tdd|d
|_|D]\}}|j|~q(|D]}|qR|dSt|tr|}|s|dSnL|dk	r||jd}|dk	r|jr|j|jn|j|j~~||r4z&dk	rd_|s|WdSWntk
r2YnXdq2dS)NcstpdkpjSr)r_shutdown_threadr)executorrr

shutting_down@sz/_queue_management_worker.<locals>.shutting_downc	stddD}|}d}||kr|dkrt||D]6}zd|d7}Wq:tk
rnYqrYq:Xq:tddD}qD]}|qdS)Ncss|]}|VqdSrZis_aliverUprrr
	<genexpr>FszD_queue_management_worker.<locals>.shutdown_worker.<locals>.<genexpr>rr!css|]}|VqdSrrnrorrr
rqRs)sumvaluesrangeZ
put_nowaitrrr)Zn_children_aliveZn_children_to_stopZn_sentinels_sentirp)rd	processesrr
shutdown_workerDs
z1_queue_management_worker.<locals>.shutdown_workercSsg|]
}|jqSr)sentinelrorrr
rWisz,_queue_management_worker.<locals>.<listcomp>TFzKA child process terminated abruptly, the process pool is not usable anymorez^A process in the process pool was terminated abruptly while the future was running or pending.z
'''
r(z''')rrjrsrZ
connectionwaitZrecvr[r)r*r+rCr_brokenrkBrokenProcessPoolr#rr/rr1rFZ	terminaterBintrEr7r8Z
set_resultr9r)Zexecutor_referencervr=Zwork_ids_queuerdr\rrmrwZ
result_readerZ
wakeup_readerZreadersZworker_sentinelsZreadycauseZ	is_brokenZresult_itemrHZbper7rJrpr)rdrlrvr
_queue_management_worker"s	(





r~c	Csjtrtrttdaztd}Wnttfk
r<YdSX|dkrJdS|dkrVdSd|attdS)NTSC_SEM_NSEMS_MAXz@system provides too few semaphores (%d available, 256 necessary))_system_limits_checked_system_limitedNotImplementedErrorrbsysconfAttributeError
ValueError)Z	nsems_maxrrr
_check_system_limitss rccs&|D]}||r|VqqdSr)reverserE)iterableZelementrrr
_chain_from_iterable_of_listssrc@seZdZdS)r{N)rrrrrrr
r{sr{csteZdZdddZddZddZd	d
Zejjj	e_	ejjj
e_
dddfd
d
ZdddZejjj
e_
Z
S)ProcessPoolExecutorNrcCst|dkr6tpd|_tjdkrntt|j|_n8|dkrHtdn tjdkrh|tkrhtdt||_|dkr~t	
}||_|dk	rt|st
d||_||_d|_i|_d|_t|_d|_d|_i|_|jt}t||j|jd|_d	|j_||_t |_!t"|_#dS)
Nr!Zwin32rz"max_workers must be greater than 0zmax_workers must be <= zinitializer must be a callableF)r?r<r=T)$rrb	cpu_count_max_workerssysplatformmin_MAX_WINDOWS_WORKERSrrZget_context_mp_contextcallable	TypeError_initializer	_initargs_queue_management_thread
_processesrk	threadingZLock_shutdown_lockrz_queue_count_pending_work_itemsEXTRA_QUEUED_CALLSr;_call_queueZ
_ignore_epipeZSimpleQueue
_result_queuerir	_work_idsr_queue_management_thread_wakeup)rZmax_workersZ
mp_contextrerfZ
queue_sizerrr
rsP







zProcessPoolExecutor.__init__c	Csv|jdkrr|jfdd}|tjtt|||j|j	|j
|j|j|jfdd|_d|j_
|j|jt|j<dS)NcSstjd|dS)Nz?Executor collected: triggering callback for QueueManager wakeup)rutildebugr)rrrrr

weakref_cbBszFProcessPoolExecutor._start_queue_management_thread.<locals>.weakref_cbZQueueManagerThread)targetr3nameT)rr_adjust_process_countrZThreadr~weakrefrefrrrrrZdaemonstartr)rrrrr
_start_queue_management_thread=s(




z2ProcessPoolExecutor._start_queue_management_threadcCsPtt|j|jD]8}|jjt|j|j|j	|j
fd}|||j|j<qdS)N)rr3)
rtlenrrrZProcessrhrrrrrpid)rrrprrr
rXsz)ProcessPoolExecutor._adjust_process_countc
Os
t|dkr|^}}}nV|s&tdnHd|krZ|d}|^}}ddl}|jdtddntdt|d|j|jrt|j|j	rt
d	trt
d
t
}t||||}||j|j<|j|j|jd7_|j||W5QRSQRXdS)NzEdescriptor 'submit' of 'ProcessPoolExecutor' object needs an argumentr2rz.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)rrrEwarningswarnDeprecationWarningrrzr{rkRuntimeErrorrrZFuturer0rrrrZrrr)r3r4rr2rfwrrr
submitcs<




zProcessPoolExecutor.submitr!)timeoutrPcs:|dkrtdtjtt|t|d|i|d}t|S)Nr!zchunksize must be >= 1.rP)r)rr>maprrXrTr)rr2rrPrQZresultsr@rr
rszProcessPoolExecutor.mapTc	Cs|jd|_W5QRX|jr6|j|r6|jd|_|jdk	rd|j|r^|jd|_d|_	d|_
|jr|jd|_dSr)rrkrrrrrrZjoin_threadrr)rryrrr
shutdowns"





zProcessPoolExecutor.shutdown)NNNr)T)rrrrrrrrExecutor__text_signature____doc__rrrKrrr@r
rs
K$
r)NN)2
__author__atexitrbZconcurrent.futuresrrirZmultiprocessingrZmultiprocessing.connectionZmultiprocessing.queuesrrr	functoolsrrNrr)WeakKeyDictionaryrrrr rr	Exceptionr#r'r-objectr0r6r:r;rTrXr]rhrjr~rrrrZBrokenExecutorr{rrregisterrrrr
<module>.sT
		

)&!P
Back to Directory File Manager