Your IP : 172.28.240.42


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


|_c@sddlZddlZddlZddlmZmZddddddgZd	Zdd
lm	Z	de	fdYZ
dZe
je
e
jed
Ze
je
ejee
je
ejeyddlmZWnek
rn#XdZdZe
jeeejdkrwddlZejZejZejZde fdYZ!n}ddl"Z"ddl#Z#ddl$Z$ddlZddl%m&Z&m'Z'm(Z(ddlm)Z)ddlm*Z*m+Z+ddZ-dZ.ejdkoe/ede0Z1ej2j3j4dZ5e&j6Ze&j7Ze5rgej8j9ej:da;n	ej2a;dZ<de0dZde fdYZ!dZ=d Z>d!Z?d"Z@d#ZAd$ZBe
je'eBe
je(eBgZCd%ZDdS(&iN(tutiltprocesstPopentassert_spawningtexitt	duplicatetclosetForkingPicklercCs,tjs(tdt|jndS(NsF%s objects should only be shared between processes through inheritance(Rtthread_is_spawningtRuntimeErrorttypet__name__(tself((s-/usr/lib/python2.7/multiprocessing/forking.pyR/s(tPicklercBs&eZejjZedZRS(cs fd}||j|<dS(Ncs#|}|jd||dS(Ntobj(tsave_reduce(RRtrv(treduce(s-/usr/lib/python2.7/multiprocessing/forking.pyt
dispatcher@s(tdispatch(tclsR
RR((Rs-/usr/lib/python2.7/multiprocessing/forking.pytregister>s(Rt
__module__R
RtcopytclassmethodR(((s-/usr/lib/python2.7/multiprocessing/forking.pyR;scCsE|jdkr(t|j|jjffSt|j|jjffSdS(N(tim_selftNonetgetattrtim_classtim_funct	func_name(tm((s-/usr/lib/python2.7/multiprocessing/forking.pyt_reduce_methodEscCst|j|jffS(N(Rt__objclass__R(R((s-/usr/lib/python2.7/multiprocessing/forking.pyt_reduce_method_descriptorLs(tpartialcCs"t|j|j|jpiffS(N(t_rebuild_partialtfunctargstkeywords(tp((s-/usr/lib/python2.7/multiprocessing/forking.pyt_reduce_partial[scCst|||S(N(R#(R%R&R'((s-/usr/lib/python2.7/multiprocessing/forking.pyR$]stwin32cBsDeZdZejdZddZdZe	dZ
RS(cCstjjtjjd|_tj|_|jdkrdtj	kriddl
}|jn|j}tjjtjjtj
|ndS(Nitrandomi(tsyststdouttflushtstderrRt
returncodetostforktpidtmodulesR+tseedt
_bootstrapt_exit(Rtprocess_objR+tcode((s-/usr/lib/python2.7/multiprocessing/forking.pyt__init__ss

	


cCs|jdkrytj|j|\}}Wntjk
rEdSX||jkrtj|rztj||_qtj|st	tj
||_qn|jS(N(R0RR1twaitpidR3terrortWIFSIGNALEDtWTERMSIGt	WIFEXITEDtAssertionErrortWEXITSTATUS(RtflagR3tsts((s-/usr/lib/python2.7/multiprocessing/forking.pytpollscCs|dkr|jdStj|}d}xb|j}|dk	rNPn|tj}|dkrnPnt|d|d}tj|q2|S(NigMb@?ig?(RRDttimetmintsleep(Rttimeouttdeadlinetdelaytrest	remaining((s-/usr/lib/python2.7/multiprocessing/forking.pytwaits
cCsd|jdkr`ytj|jtjWq`tk
r\}|jdddkr]q]q`XndS(NRHg?(	R0RR1tkillR3tsignaltSIGTERMtOSErrorRM(Rte((s-/usr/lib/python2.7/multiprocessing/forking.pyt	terminatescCstS(N(tFalse(((s-/usr/lib/python2.7/multiprocessing/forking.pyRsN(RRR:R1tWNOHANGRDRRMRStstaticmethodR(((s-/usr/lib/python2.7/multiprocessing/forking.pyRqs
		(R*t
ConnectiontPipeConnectioni(tFinalize(tloadtHIGHEST_PROTOCOLcCst||j|dS(N(Rtdump(Rtfiletprotocol((s-/usr/lib/python2.7/multiprocessing/forking.pyR\sitfrozenspythonservice.exes
python.execCs
|adS(N(t_python_exe(texe((s-/usr/lib/python2.7/multiprocessing/forking.pytset_executablescCsF|dkrtj}ntjtj||d|tjjS(Ni(Rt_subprocesstGetCurrentProcesstDuplicateHandletDUPLICATE_SAME_ACCESStDetach(thandlettarget_processtinheritable((s-/usr/lib/python2.7/multiprocessing/forking.pyRs
cBs_eZdZejZdZedZedZ	ddZdZdZ
RS(sH
        Start a subprocess to run the code of a process object
        c
Cs7tj\}}ttj|dt}tj|t|g}djd|D}t	j
t|ddddddd	\}}}}	|j
t|||_d|_||_t|j}
tj|d}t|tj_z$t|
|tt||tWdtj`|jXdS(NRjt css|]}d|VqdS(s"%s"N((t.0tx((s-/usr/lib/python2.7/multiprocessing/forking.pys	<genexpr>siitwb(R1tpipeRtmsvcrtt
get_osfhandletTrueRtget_command_linetjoinRct
CreateProcessR`RtCloseR3R0t_handletget_preparation_datat_nametfdopentintRt_tlstprocess_handleR\R[(RR8trfdtwfdtrhandletcmdthpthtR3ttidt	prep_datatto_child((s-/usr/lib/python2.7/multiprocessing/forking.pyR:s(
-

				cCsttjdddk	S(NR}(RRR|R(((s-/usr/lib/python2.7/multiprocessing/forking.pyRscCst|tjjS(N(RRR|R}(Rh((s-/usr/lib/python2.7/multiprocessing/forking.pytduplicate_for_childscCs|jdkr|dkr'tj}ntdt|dd}tjt|j|}|tjkrtj	|j}|t
krtj}n||_qn|jS(Niig?(
R0RRctINFINITEtmaxR{tWaitForSingleObjectRwt
WAIT_OBJECT_0tGetExitCodeProcesst	TERMINATERORP(RRHtmsecsRKR9((s-/usr/lib/python2.7/multiprocessing/forking.pyRMs
cCs|jddS(NRHi(RM(R((s-/usr/lib/python2.7/multiprocessing/forking.pyRD,scCse|jdkraytjt|jtWqatk
r]|jdddkr^q^qaXndS(NRHg?(	R0RRctTerminateProcessR{RwRtWindowsErrorRM(R((s-/usr/lib/python2.7/multiprocessing/forking.pyRS/s
N(RRt__doc__tthreadt_localR|R:RVRRRRMRDRS(((s-/usr/lib/python2.7/multiprocessing/forking.pyRs	!	cCsFt|dkr>|ddkr>t|dks:ttStSdS(sE
        Return whether commandline indicates we are forking
        iis--multiprocessing-forkiN(tlenR@RrRT(targv((s-/usr/lib/python2.7/multiprocessing/forking.pyt
is_forking;s"cCs'ttjr#ttjndS(sM
        Run code for process object if this in not the main process
        N(RR,RtmainR(((s-/usr/lib/python2.7/multiprocessing/forking.pytfreeze_supportFscCsltjjdkr3ttjr3tdnttdtrRtj	dgSd}t
d|dgSdS(sR
        Returns prefix of command line used for spawning a child process
        s
            Attempt to start a new process before the current process
            has finished its bootstrapping phase.

            This probably means that you are on Windows and you have
            forgotten to use the proper idiom in the main module:

                if __name__ == '__main__':
                    freeze_support()
                    ...

            The "freeze_support()" line can be omitted if the program
            is not going to be frozen to produce a Windows executable.R_s--multiprocessing-forks0from multiprocessing.forking import main; main()s-cN((Rtcurrent_processt	_identityRR,RR	RRTt
executableR`(tprog((s-/usr/lib/python2.7/multiprocessing/forking.pyRsOs$
cCsttjstttjd}tj|tj}tj	|d}t
tj_
t|}t|t|}ttj_
|j|j}t|dS(s>
        Run code specifed by data received over pipe
        itrbN(RR,RR@R{Rptopen_osfhandleR1tO_RDONLYRzRrRRt_inheritingRZtprepareRTRR6R(Rhtfdtfrom_parenttpreparation_dataRtexitcode((s-/usr/lib/python2.7/multiprocessing/forking.pyRis

c
Cs.ddlm}m}td|dtjdtjd|dtjdtj	j
}|dk	rt|j|d	<nt
r*tr*ttjd
dd}|rtjddkrtjd}n|dk	r*tjj|rtjdk	rtjjtj|}ntjj||d<q*n|S(sU
        Return info about parent needed by child to unpickle process object
        i(t_loggert_log_to_stderrtnametsys_pathtsys_argvt
log_to_stderrtorig_dirtauthkeyt	log_levelt__main__t__file__its-ct	main_pathN(Rs-c(RRRtdictR,tpathRRtORIGINAL_DIRRRRtgetEffectiveLeveltWINEXEt
WINSERVICERR4R1tisabsRttnormpath(RRRtdR((s-/usr/lib/python2.7/multiprocessing/forking.pyRxs(			cCsVtjs(tdt|jnt|tj|j|j|jffS(NsLBy default %s objects can only be shared between processes
using inheritance(	RRR	R
RRtfilenotreadabletwritable(tconn((s-/usr/lib/python2.7/multiprocessing/forking.pytreduce_connectionsc
Cstjtjdd|kr6|dtj_nd|krX|dtj_nd|kr{|dr{tj	nd|krtj
j|dnd|kr|dt_nd|kr|dt_
nd|krtj|dnd	|kr|d	t_nd
|kr|d
}tjjtjj|d}|dkrztjjtjj|}n|d
krddl}|dkrd}nTtjj|jdrtjjtjj|g}ntjj|g}|tjkst||j||\}}}z|jd|||}Wd|rc|jnX|tjd<d|_xM|jjD]9}	y|	jdkrd|	_nWqtk
rqXqWqndS(sE
    Try to get current process ready to unpickle process object
    RRRRRRRtdirRRiR:tipythoniNs__init__.pyt__parents_main__( told_main_modulestappendR,R4RRRt_authkeyRRt
get_loggertsetLevelRRR1tchdirRtsplitexttbasenametdirnametimpRt
startswithR@tfind_moduletload_moduleRRt__dict__tvaluesRt	Exception(
tdataRt	main_nameRtdirsR]t	path_nametetctmain_moduleR((s-/usr/lib/python2.7/multiprocessing/forking.pyRsX

"!	$
	
(ER1R,ROtmultiprocessingRRt__all__RtpickleR
RR RR
tsaveR"tlistRR{t__add__t	functoolsR#tImportErrorR)R$tplatformRER7RtdupRRtobjectRRRpRct_multiprocessingR*RWRXRYRZR[RR\RRRTRRtlowertendswithRtExitProcesstCloseHandleRRttexec_prefixR`RbRRRsRRxRRR(((s-/usr/lib/python2.7/multiprocessing/forking.pyt<module>#sl	
		
					B!				
N						"