Your IP : 3.145.35.234


Current Path : /lib64/python2.7/multiprocessing/
Upload File :
Current File : //lib64/python2.7/multiprocessing/pool.pyc

�
{fc@sTdgZddlZddlZddlZddlZddlZddlmZmZm	Z	ddl
mZmZdZ
dZdZej�Zd�Zd	efd
��YZefed�Zdefd��YZd
efd��YZeZdefd��YZdefd��YZdefd��YZdefd��YZdS(tPooli����N(tProcesst	cpu_counttTimeoutError(tFinalizetdebugiiicCs
t|�S(N(tmap(targs((s,/usr/lib64/python2.7/multiprocessing/pool.pytmapstar@stMaybeEncodingErrorcBs)eZdZd�Zd�Zd�ZRS(sVWraps possible unpickleable errors, so they can be
    safely sent through the socket.cCsAt|�|_t|�|_tt|�j|j|j�dS(N(treprtexctvaluetsuperR	t__init__(tselfRR((s,/usr/lib64/python2.7/multiprocessing/pool.pyRKscCsd|j|jfS(Ns(Error sending result: '%s'. Reason: '%s'(RR(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt__str__Ps	cCsdt|�S(Ns<MaybeEncodingError: %s>(tstr(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt__repr__Ts(t__name__t
__module__t__doc__RRR(((s,/usr/lib64/python2.7/multiprocessing/pool.pyR	Gs		cCs�|dks6t|�ttfkr0|dks6t�|j}|j}t|d�rt|jj	�|j
j	�n|dk	r�||�nd}xI|dks�|r�||kr�y
|�}Wn"ttfk
r�t
d�PnX|dkrt
d�Pn|\}	}
}}}
yt|||
�f}Wntk
rO}t|f}nXy||	|
|f�WnMtk
r�}t||d�}t
d|�||	|
t|ff�nXd}}	}}}}
|d7}q�Wt
d|�dS(Nit_writers)worker got EOFError or IOError -- exitingsworker got sentinel -- exitingis0Possible encoding error while sending result: %ssworker exiting after %d tasks(tNonettypetinttlongtAssertionErrortputtgetthasattrRtcloset_readertEOFErrortIOErrorRtTruet	ExceptiontFalseR	(tinqueuetoutqueuetinitializertinitargstmaxtasksRRt	completedttasktjobtitfuncRtkwdstresulttetwrapped((s,/usr/lib64/python2.7/multiprocessing/pool.pytworkerXsB6		

!


cBseZdZeZddddd�Zd�Zd�Zd�Zd�Z	did�Z
dd�Zdd	�Zdd
�Z
didd�Zddd�Zed
��Zed��Zed��Zed��Zd�Zd�Zd�Zd�Zed��Zed��ZRS(sH
    Class which supports an async version of the `apply()` builtin
    cCs/|j�tj�|_i|_t|_||_||_||_|dkr|y
t
�}Wq|tk
rxd}q|Xn|dkr�td��n|dk	r�t
|d�r�td��n||_g|_|j�tjdtjd|f�|_t|j_t|j_|jj�tjdtjd|j|j|j|j|jf�|_t|j_t|j_|jj�tjdtjd|j|j|jf�|_ t|j _t|j _|j j�t!||j"d|j|j#|j|j|j|j|j |jfdd�|_$dS(	Nis&Number of processes must be at least 1t__call__sinitializer must be a callablettargetRtexitpriorityi(%t
_setup_queuestQueuet
_taskqueuet_cachetRUNt_statet_maxtasksperchildt_initializert	_initargsRRtNotImplementedErrort
ValueErrorRt	TypeErrort
_processest_poolt_repopulate_poolt	threadingtThreadRt_handle_workerst_worker_handlerR#tdaemontstartt
_handle_taskst
_quick_putt	_outqueuet
_task_handlert_handle_resultst
_quick_gett_result_handlerRt_terminate_poolt_inqueuet
_terminate(Rt	processesR(R)tmaxtasksperchild((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�sX
					


		
		
		
		
cCswt}xjttt|j���D]M}|j|}|jdk	r"td|�|j�t	}|j|=q"q"W|S(s�Cleanup after any worker processes which have exited due to reaching
        their specified lifetime.  Returns True if any workers were cleaned up.
        scleaning up worker %dN(
R%treversedtrangetlenREtexitcodeRRtjoinR#(RtcleanedR.R4((s,/usr/lib64/python2.7/multiprocessing/pool.pyt_join_exited_workers�s"

c
Cs�x�t|jt|j��D]�}|jdtd|j|j|j|j	|j
f�}|jj|�|jj
dd�|_t|_|j�td�qWdS(s�Bring the number of pool processes up to the specified number,
        for use after reaping workers which have exited.
        R6RRt
PoolWorkersadded workerN(RZRDR[RERR4RUROR?R@R>tappendtnametreplaceR#RKRLR(RR.tw((s,/usr/lib64/python2.7/multiprocessing/pool.pyRF�s#	
cCs|j�r|j�ndS(sEClean up any exited workers and start replacements for them.
        N(R_RF(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt_maintain_pool�scCsPddlm}|�|_|�|_|jjj|_|jjj|_	dS(Ni(tSimpleQueue(
tqueuesRfRURORtsendRNR trecvRR(RRf((s,/usr/lib64/python2.7/multiprocessing/pool.pyR8�s
cCs.|jtkst�|j|||�j�S(s1
        Equivalent of `apply()` builtin
        (R=R<Rtapply_asyncR(RR/RR0((s,/usr/lib64/python2.7/multiprocessing/pool.pytapply�scCs.|jtkst�|j|||�j�S(s/
        Equivalent of `map()` builtin
        (R=R<Rt	map_asyncR(RR/titerablet	chunksize((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�sics�|jtkst�|dkrft|j��|jj��fd�t|�D��jf��S|dksxt�t	j
�||�}t|j��|jj�fd�t|�D��jf�d��D�SdS(sZ
        Equivalent of `itertools.imap()` -- can be MUCH slower than `Pool.map()`
        ic3s0|]&\}}�j|�|fifVqdS(N(t_job(t.0R.tx(R/R1(s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>sc3s0|]&\}}�j|t|fifVqdS(N(RoR(RpR.Rq(R1(s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>
scss"|]}|D]}|Vq
qdS(N((Rptchunktitem((s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>sN(R=R<RtIMapIteratorR;R:Rt	enumeratet_set_lengthRt
_get_tasks(RR/RmRnttask_batches((R/R1s,/usr/lib64/python2.7/multiprocessing/pool.pytimap�scs�|jtkst�|dkrft|j��|jj��fd�t|�D��jf��S|dksxt�t	j
�||�}t|j��|jj�fd�t|�D��jf�d��D�SdS(sK
        Like `imap()` method but ordering of results is arbitrary
        ic3s0|]&\}}�j|�|fifVqdS(N(Ro(RpR.Rq(R/R1(s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>sc3s0|]&\}}�j|t|fifVqdS(N(RoR(RpR.Rq(R1(s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>scss"|]}|D]}|Vq
qdS(N((RpRrRs((s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>!sN(R=R<RtIMapUnorderedIteratorR;R:RRuRvRRw(RR/RmRnRx((R/R1s,/usr/lib64/python2.7/multiprocessing/pool.pytimap_unorderedscCsV|jtkst�t|j|�}|jj|jd|||fgdf�|S(s>
        Asynchronous equivalent of `apply()` builtin
        N(	R=R<RtApplyResultR;R:RRoR(RR/RR0tcallbackR1((s,/usr/lib64/python2.7/multiprocessing/pool.pyRj#s+cs�|jtkst�t|d�s3t|�}n|dkr}tt|�t|j�d�\}}|r}|d7}q}nt|�dkr�d}nt	j
|||�}t|j|t|�|��|j
j�fd�t|�D�df��S(s<
        Asynchronous equivalent of `map()` builtin
        t__len__iiic3s0|]&\}}�j|t|fifVqdS(N(RoR(RpR.Rq(R1(s,/usr/lib64/python2.7/multiprocessing/pool.pys	<genexpr>=sN(R=R<RRtlistRtdivmodR[RERRwt	MapResultR;R:RRu(RR/RmRnR}textraRx((R1s,/usr/lib64/python2.7/multiprocessing/pool.pyRl,s(	cCsotj�}xB|jtks6|jrP|jtkrP|j�tjd�qW|j	j
d�td�dS(Ng�������?sworker handler exiting(
RGtcurrent_threadR=R<R;t	TERMINATERettimetsleepR:RRR(tpooltthread((s,/usr/lib64/python2.7/multiprocessing/pool.pyRIAs*
cCs
tj�}x�t|jd�D]q\}}d}d}	zGy�x�t|�D]�\}	}|jrmtd�Pny||�WqJtk
r�}
|d \}}y||j	|t
|
f�Wq�tk
r�q�XqJXqJW|r�td�||	d�nwPWn}tk
r|}
|r|d nd\}}||krX||j	|dt
|
f�n|r}td�||	d�q}nXWdd}}}XqWtd�y@td�|jd�td	�x|D]}|d�q�WWnt
k
r�td
�nXtd�dS(
Ni����s'task handler found thread._state != RUNisdoing set_length()iistask handler got sentinels/task handler sending sentinel to result handlers(task handler sending sentinel to workerss/task handler got IOError when sending sentinelsstask handler exiting(ii(RGR�titerRRRuR=RR$t_setR%tKeyErrorRR"(t	taskqueueRR'R�tcacheR�ttaskseqt
set_lengthR,R.R2R-tindtextp((s,/usr/lib64/python2.7/multiprocessing/pool.pyRMNsR	


!






cCstj�}x�y
|�}Wn"ttfk
r@td�dSX|jrm|jtks_t�td�Pn|dkr�td�Pn|\}}}y||j	||�Wnt
k
r�nXd}}}qWx�|r�|jtkr�y
|�}Wn"ttfk
rtd�dSX|dkr:td�q�n|\}}}y||j	||�Wnt
k
rtnXd}}}q�Wt|d�r�td�y5x.td�D] }|j
j�s�Pn|�q�WWq�ttfk
r�q�Xntdt|�|j�dS(	Ns.result handler got EOFError/IOError -- exitings,result handler found thread._state=TERMINATEsresult handler got sentinels&result handler ignoring extra sentinelR s"ensuring that outqueue is not fulli
s7result handler exiting: len(cache)=%s, thread._state=%s(RGR�R"R!RR=R�RRR�R�RRZR tpollR[(R'RR�R�R,R-R.tobj((s,/usr/lib64/python2.7/multiprocessing/pool.pyRQ�s\

	







ccsDt|�}x1ttj||��}|s1dS||fVqWdS(N(R�ttuplet	itertoolstislice(R/tittsizeRq((s,/usr/lib64/python2.7/multiprocessing/pool.pyRw�scCstd��dS(Ns:pool objects cannot be passed between processes or pickled(RA(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt
__reduce__�scCs5td�|jtkr1t|_t|j_ndS(Nsclosing pool(RR=R<tCLOSERJ(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�s
	cCs-td�t|_t|j_|j�dS(Nsterminating pool(RR�R=RJRV(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt	terminate�s
	cCsntd�|jttfks%t�|jj�|jj�|jj�x|j	D]}|j�qVWdS(Nsjoining pool(
RR=R�R�RRJR]RPRSRE(RR�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR]�s



cCsWtd�|jj�x9|j�rR|jj�rR|jj�tjd�qWdS(Ns7removing tasks from inqueue until task handler finishedi(	Rt_rlocktacquiretis_aliveR R�RiR�R�(R&ttask_handlerR�((s,/usr/lib64/python2.7/multiprocessing/pool.pyt_help_stuff_finish�s



c	
Cs�td�t|_t|_td�|j||t|��|j�sct|�dksct�t|_|jd�td�t	j
�|k	r�|jd�n|r�t|dd�r�td�x-|D]"}	|	j
dkr�|	j�q�q�Wntd�t	j
�|k	r$|jd�ntd	�t	j
�|k	rP|jd�n|r�t|dd�r�td
�x;|D]0}	|	j�rztd|	j�|	j�qzqzWndS(Nsfinalizing pools&helping task handler/workers to finishisjoining worker handlerg}Ô%�I�TR�sterminating workerssjoining task handlersjoining result handlersjoining pool workersscleaning up worker %d(RR�R=R�R[R�RRRRGR�R]RR\R�tpid(
tclsR�R&R'R�tworker_handlerR�tresult_handlerR�R�((s,/usr/lib64/python2.7/multiprocessing/pool.pyRT�s8
		
$	







N((((RRRRRRR_RFReR8RkRRyR{RjRltstaticmethodRIRMRQRwR�RR�R]R�tclassmethodRT(((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�s0	:					
4<							R|cBsDeZd�Zd�Zd�Zdd�Zdd�Zd�ZRS(cCsStjtj��|_tj�|_||_t|_	||_
|||j<dS(N(RGt	ConditiontLockt_condtjob_countertnextRoR;R%t_readyt	_callback(RR�R}((s,/usr/lib64/python2.7/multiprocessing/pool.pyRs			cCs|jS(N(R�(R((s,/usr/lib64/python2.7/multiprocessing/pool.pytready&scCs|jst�|jS(N(R�Rt_success(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt
successful)scCsB|jj�z |js,|jj|�nWd|jj�XdS(N(R�R�R�twaittrelease(Rttimeout((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�-s

	cCs<|j|�|jst�n|jr/|jS|j�dS(N(R�R�RR�t_value(RR�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR5s
			cCs�|\|_|_|jr7|jr7|j|j�n|jj�zt|_|jj�Wd|jj�X|j	|j
=dS(N(R�R�R�R�R�R#R�tnotifyR�R;Ro(RR.R�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�>s
	N(	RRRR�R�RR�RR�(((s,/usr/lib64/python2.7/multiprocessing/pool.pyR|s				R�cBseZd�Zd�ZRS(cCstj|||�t|_dg||_||_|dkr`d|_t|_||j	=n||t
||�|_dS(Ni(R|RR#R�RR�t
_chunksizet_number_leftR�Rotbool(RR�RntlengthR}((s,/usr/lib64/python2.7/multiprocessing/pool.pyRRs				
cCs|\}}|r�||j||j|d|j+|jd8_|jdkr|jrn|j|j�n|j|j=|jj�zt|_	|jj
�Wd|jj�XqnWt|_
||_|j|j=|jj�zt|_	|jj
�Wd|jj�XdS(Nii(R�R�R�R�R;RoR�R�R#R�R�R�R%R�(RR.tsuccess_resulttsuccessR1((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�^s*"	

			

	(RRRR�(((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�Ps	RtcBs>eZd�Zd�Zdd�ZeZd�Zd�ZRS(cCsktjtj��|_tj�|_||_tj	�|_
d|_d|_
i|_|||j<dS(Ni(RGR�R�R�R�R�RoR;tcollectionstdequet_itemst_indexRt_lengtht	_unsorted(RR�((s,/usr/lib64/python2.7/multiprocessing/pool.pyRs				cCs|S(N((R((s,/usr/lib64/python2.7/multiprocessing/pool.pyt__iter__�scCs�|jj�z�y|jj�}Wn�tk
r�|j|jkrNt�n|jj|�y|jj�}Wq�tk
r�|j|jkr�t�nt	�q�XnXWd|jj
�X|\}}|r�|S|�dS(N(R�R�R�tpopleftt
IndexErrorR�R�t
StopIterationR�RR�(RR�RsR�R((s,/usr/lib64/python2.7/multiprocessing/pool.pyR��s&

	
	cCs�|jj�z�|j|kr�|jj|�|jd7_xJ|j|jkr�|jj|j�}|jj|�|jd7_qAW|jj�n
||j|<|j|jkr�|j	|j
=nWd|jj�XdS(Ni(R�R�R�R�RaR�tpopR�R�R;RoR�(RR.R�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR��s

cCs^|jj�z<||_|j|jkrH|jj�|j|j=nWd|jj�XdS(N(R�R�R�R�R�R;RoR�(RR�((s,/usr/lib64/python2.7/multiprocessing/pool.pyRv�s
	
N(	RRRR�RR�t__next__R�Rv(((s,/usr/lib64/python2.7/multiprocessing/pool.pyRt}s	
		RzcBseZd�ZRS(cCst|jj�zR|jj|�|jd7_|jj�|j|jkr^|j|j=nWd|jj	�XdS(Ni(
R�R�R�RaR�R�R�R;RoR�(RR.R�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR��s

(RRR�(((s,/usr/lib64/python2.7/multiprocessing/pool.pyRz�st
ThreadPoolcBsBeZddlmZdddd�Zd�Zed��ZRS(i(RcCstj||||�dS(N(RR(RRWR(R)((s,/usr/lib64/python2.7/multiprocessing/pool.pyR�scCs@tj�|_tj�|_|jj|_|jj|_dS(N(R9RURORRNRRR(R((s,/usr/lib64/python2.7/multiprocessing/pool.pyR8�scCsW|jj�z5|jj�|jjdg|�|jj�Wd|jj�XdS(N(t	not_emptyR�tqueuetcleartextendRt
notify_allR�(R&R�R�((s,/usr/lib64/python2.7/multiprocessing/pool.pyR��s

N((	RRtdummyRRRR8R�R�(((s,/usr/lib64/python2.7/multiprocessing/pool.pyR��s	(t__all__RGR9R�R�R�tmultiprocessingRRRtmultiprocessing.utilRRR<R�R�tcountR�RR$R	RR4tobjectRR|tAsyncResultR�RtRzR�(((s,/usr/lib64/python2.7/multiprocessing/pool.pyt<module>#s,		,��.-I

?>