Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/multiprocessing/
Upload File :
Current File : //usr/lib/python2.7/multiprocessing/heap.pyc


|_c@s
ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZdgZ
ejdkrddlmZdefdYZndefd	YZd
efdYZdefdYZdS(
iN(tFinalizetinfo(tassert_spawningt
BufferWrappertwin32(RtArenacBs/eZejZdZdZdZRS(cCs||_dtjtjjf|_tjd|jd|j|_t	j
dksjtd|j|jf|_dS(Ns	pym-%d-%dittagnameistagname already in use(
tsizetostgetpidRt_countertnexttnametmmaptbufferRtGetLastErrortAssertionErrort_state(tselfR((s*/usr/lib/python2.7/multiprocessing/heap.pyt__init__=s
	"!cCst||jS(N(RR(R((s*/usr/lib/python2.7/multiprocessing/heap.pyt__getstate__Ds
cCsY|\|_|_|_tjd|jd|j|_tjtjksUtdS(NiR(	RRRR
RRRtERROR_ALREADY_EXISTSR(Rtstate((s*/usr/lib/python2.7/multiprocessing/heap.pyt__setstate__Hs!(t__name__t
__module__t	itertoolstcountR
RRR(((s*/usr/lib/python2.7/multiprocessing/heap.pyR9s		cBseZdZRS(cCs+tjd||_||_d|_dS(Ni(R
RRtNoneR(RR((s*/usr/lib/python2.7/multiprocessing/heap.pyRQs	(RRR(((s*/usr/lib/python2.7/multiprocessing/heap.pyROstHeapcBsbeZdZejdZedZdZdZ	dZ
dZdZdZ
RS(	icCsmtj|_tj|_||_g|_i|_i|_	i|_
t|_g|_
g|_dS(N(RR	t_lastpidt	threadingtLockt_lockt_sizet_lengthst_len_to_seqt_start_to_blockt_stop_to_blocktsett_allocated_blockst_arenast_pending_free_blocks(RR((s*/usr/lib/python2.7/multiprocessing/heap.pyR^s						cCs|d}|||@S(Ni((tnt	alignmenttmask((s*/usr/lib/python2.7/multiprocessing/heap.pyt_roundupks
c	Cstj|j|}|t|jkr|jt|j|tj}|jd9_t	d|t
|}|jj||d|fS|j|}|j
|}|j}|s|j
|=|j|=n|\}}}|j||f=|j||f=|S(Nis"allocating a new mmap of length %di(tbisecttbisect_leftR#tlenR.tmaxR"R
tPAGESIZERRR)tappendR$tpopR%R&(	RRtitlengthtarenatseqtblocktstarttstop((s*/usr/lib/python2.7/multiprocessing/heap.pyt_mallocqs"!



c	Cs!|\}}}y|j||f}Wntk
r9nX|j|\}}y|j||f}Wntk
rynX|j|\}}|||f}||}y|j|j|Wn4tk
r|g|j|<tj|j|nX||j||f<||j||f<dS(N(	R&tKeyErrort_absorbR%R$R4R/tinsortR#(	RR:R8R;R<t
prev_blockt_t
next_blockR7((s*/usr/lib/python2.7/multiprocessing/heap.pyt_frees(



cCs|\}}}|j||f=|j||f=||}|j|}|j||sv|j|=|jj|n||fS(N(R%R&R$tremoveR#(RR:R8R;R<R7R9((s*/usr/lib/python2.7/multiprocessing/heap.pyR?s



cCsVxOtrQy|jj}Wntk
r0PnX|jj||j|qWdS(N(tTrueR*R5t
IndexErrorR(RERD(RR:((s*/usr/lib/python2.7/multiprocessing/heap.pyt_free_pending_blockss	
cCstj|jkst|jjts@|jj|n<z+|j	|j
j||j|Wd|jj
XdS(N(RR	RRR!tacquiretFalseR*R4RHR(RERDtrelease(RR:((s*/usr/lib/python2.7/multiprocessing/heap.pytfrees

cCsd|kotjkns%ttj|jkrG|jn|jj|j	z|j
t|d|j}|j
|\}}}||}||kr|j|||fn|||f}|jj||SWd|jjXdS(Nii(tsystmaxintRRR	RRR!RIRHR.R2t
_alignmentR=RDR(taddRK(RRR8R;R<tnew_stopR:((s*/usr/lib/python2.7/multiprocessing/heap.pytmallocs%



(RRROR
R3RtstaticmethodR.R=RDR?RHRLRR(((s*/usr/lib/python2.7/multiprocessing/heap.pyRZs
				
	cBs,eZeZdZdZdZRS(cCsfd|kotjkns%ttjj|}||f|_t|tjjd|fdS(Nitargs(	RMRNRRt_heapRRRRRL(RRR:((s*/usr/lib/python2.7/multiprocessing/heap.pyRs%cCsJ|j\\}}}}tj|j\}}||ksBt||S(N(Rt_multiprocessingtaddress_of_bufferRR(RR8R;R<RtaddressR7((s*/usr/lib/python2.7/multiprocessing/heap.pytget_addressscCs|jdS(Ni(R(R((s*/usr/lib/python2.7/multiprocessing/heap.pytget_sizes(RRRRURRYRZ(((s*/usr/lib/python2.7/multiprocessing/heap.pyRs			(R/R
ttempfileRRMRRRVtmultiprocessing.utilRRtmultiprocessing.forkingRt__all__tplatformRtobjectRRR(((s*/usr/lib/python2.7/multiprocessing/heap.pyt<module>#s