ž ¨ÿfŽ"c @sadddgZddlZddlZddlZddlZddlmZyejjej ƒƒZ Wne k r…dZ YnXdd„Z dd„Zdd „ZGd d„deƒZGd d „d eƒZGd d„deƒZeƒa[iZxSeejjƒƒD]<\ZZedd…dkrdekreee Wsu#Process.__init__..(uNoneuAssertionErrorunextu_current_processu_counteru _identityu_authkeyu _daemonicu_tempdiruosugetpidu _parent_pidu_popenu_targetutupleu_argsudictu_kwargsutypeu__name__ujoinu_nameu _danglinguadd(uselfugrouputargetunameuargsukwargsudaemonucount((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__Fs        #uProcess.__init__cCs&|jr"|j|j|jŽndS(uQ Method to be run in sub-process; can be overridden in sub-class N(u_targetu_argsu_kwargs(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyurunZs u Process.runcCs¶|jdkstdƒ‚|jtjƒks<tdƒ‚tj sRtdƒ‚tƒ|j dk rt|j }nddl m }||ƒ|_|jj |_ tjj|ƒdS(u% Start child process ucannot start a process twiceu:can only start a process object created by current processu3daemonic processes are not allowed to have childreni(uPopenN(u_popenuNoneuAssertionErroru _parent_piduosugetpidu_current_processu _daemonicu_cleanupu_PopenuforkinguPopenusentinelu _sentinelu _childrenuadd(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyustartas    u Process.startcCs|jjƒdS(uT Terminate process; sends SIGTERM signal or uses TerminateProcess() N(u_popenu terminate(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu terminatessuProcess.terminatecCsq|jtjƒks!tdƒ‚|jdk s<tdƒ‚|jj|ƒ}|dk rmtjj |ƒndS(u5 Wait until child process terminates ucan only join a child processucan only join a started processN( u _parent_piduosugetpiduAssertionErroru_popenuNoneuwaitu_current_processu _childrenudiscard(uselfutimeoutures((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyujoinys ! u Process.joincCsa|tkrdS|jtjƒks1tdƒ‚|jdkrDdS|jj ƒ|jj dkS(u1 Return whether process is alive ucan only test a child processTNF( u_current_processuTrueu _parent_piduosugetpiduAssertionErroru_popenuNoneuFalseupollu returncode(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuis_aliveƒs ! uProcess.is_alivecCs|jS(N(u_name(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyunamesu Process.namecCs(t|tƒstdƒ‚||_dS(Nuname must be a string(u isinstanceustruAssertionErroru_name(uselfuname((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuname“scCs|jS(u4 Return whether process is a daemon (u _daemonic(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemon˜suProcess.daemoncCs(|jdkstdƒ‚||_dS(u1 Set whether process is a daemon uprocess has already startedN(u_popenuNoneuAssertionErroru _daemonic(uselfudaemonic((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemonŸscCs|jS(N(u_authkey(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkey§suProcess.authkeycCst|ƒ|_dS(u2 Set authorization key of process N(uAuthenticationStringu_authkey(uselfuauthkey((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkey«scCs#|jdkr|jS|jjƒS(uM Return exit code of process or `None` if it has yet to stop N(u_popenuNoneupoll(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuexitcode²suProcess.exitcodecCs-|tkrtjƒS|jo(|jjSdS(uU Return identifier (PID) of process or `None` if it has yet to start N(u_current_processuosugetpidu_popenupid(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuident»s  u Process.identc Cs0y |jSWntk r+tdƒ‚YnXdS(u{ Return a file descriptor (Unix) or handle (Windows) suitable for waiting for process termination. uprocess not startedN(u _sentineluAttributeErroru ValueError(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyusentinelÇs  uProcess.sentinelcCsá|tkrd}n]|jtjƒkr3d}n?|jdkrKd}n'|jjƒdk rl|j}nd}t|ƒt kr²|dkr™d}q²dt j ||ƒ}ndt|ƒj |j ||jrÙdpÜd fS( Nustarteduunknownuinitialiustoppedu stopped[%s]u<%s(%s, %s%s)>u daemonu(u_current_processu _parent_piduosugetpidu_popenuNoneupolluexitcodeutypeuintu_exitcode_to_nameugetu__name__u_nameu _daemonic(uselfustatus((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__repr__Òs       uProcess.__repr__c(Cs×ddlm}z”yÏtƒ|_tjdƒ|_tjdk r„y#tjj ƒt t j ƒt_Wq„ttfk r€Yq„Xnt}|az|jjƒ|jƒWd~X|jdƒz|jƒd}Wd|jƒXWn¾tk rh}zd|js d}nMt|jdtƒr/|jd}n'tjjt|jdƒdƒd}WYdd}~Xn;d}ddl}tjjd|jƒ|j ƒYnXWd|jd|ƒtj!j"ƒtjj"ƒX|S(Ni(uutilu child process calling self.run()iu u Process %s: u process exiting with exitcode %d(#uuutilusetu _childrenu itertoolsucountu_counterusysustdinuNoneucloseuopenuosudevnulluOSErroru ValueErroru_current_processu_finalizer_registryuclearu_run_after_forkersuinfourunu_exit_functionu SystemExituargsu isinstanceuintustderruwriteustru tracebackunameu print_excustdoutuflush(uselfuutilu old_processuexitcodeueu traceback((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _bootstrapêsJ        !  uProcess._bootstrapN(u__name__u __module__u __qualname__u__doc__uNoneu_Popenu__init__urunustartu terminateujoinuis_aliveupropertyunameusetterudaemonuauthkeyuexitcodeuidentupidusentinelu__repr__u _bootstrap(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuProcess>s*       cBs |EeZdZdd„ZdS(uAuthenticationStringcCs>ddlm}|jƒs+tdƒ‚ntt|ƒffS(Ni(uPopenuJPickling an AuthenticationString object is disallowed for security reasons(uforkinguPopenuthread_is_spawningu TypeErroruAuthenticationStringubytes(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu __reduce__s   uAuthenticationString.__reduce__N(u__name__u __module__u __qualname__u __reduce__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuAuthenticationStringsuAuthenticationStringcBs |EeZdZdd„ZdS(u _MainProcesscCspf|_d|_d|_d|_d|_tjdƒ|_ t ƒ|_ t t jdƒƒ|_d|_dS(Nu MainProcessii F(u _identityuFalseu _daemonicu_nameuNoneu _parent_pidu_popenu itertoolsucountu_counterusetu _childrenuAuthenticationStringuosuurandomu_authkeyu_tempdir(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__.s      u_MainProcess.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _MainProcess,su _MainProcessiuSIGu_(u__all__uosusysusignalu itertoolsu _weakrefsetuWeakSetupathuabspathugetcwdu ORIGINAL_DIRuOSErroruNoneucurrent_processuactive_childrenu_cleanupuobjectuProcessubytesuAuthenticationStringu _MainProcessu_current_processu_exitcode_to_nameulistu__dict__uitemsunameusignumu _dangling(((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu s,        à ""