3 \Ÿ"ã@s.ddlZddlZddlZddlZddlmZmZddlmZddlm Z ddlm Z ddd d d d d gZ ej dkrzdZ dZn&ej dkoŽeeddƒZ ejjƒjdƒZer¶ejjejdƒanejadd „Zdd „Zdd„Zdd„Zdd „Zd&dd„Zdd„Zdd„Zdd „ZgZ dd „Z!d!d"„Z"d#d$„Z#d%d „Z$dS)'éNé)Úget_start_methodÚset_start_method)Úprocess)Ú reduction)ÚutilÚ_mainÚfreeze_supportÚset_executableÚget_executableÚget_preparation_dataÚget_command_lineÚimport_main_pathÚwin32FÚfrozenzpythonservice.exez python.execCs|adS)N)Ú _python_exe)Zexe©rú-/usr/lib64/python3.6/multiprocessing/spawn.pyr )scCstS)N)rrrrrr -scCs$t|ƒdkr|ddkrdSdSdS)z= Return whether commandline indicates we are forking érz--multiprocessing-forkTFN)Úlen)ÚargvrrrÚ is_forking4srcCshttjƒrdi}xBtjdd…D]0}|jdƒ\}}|dkrBd||<qt|ƒ||<qWtf|ŽtjƒdS)zE Run code for process object if this in not the main process rNú=ÚNone)rÚsysrÚsplitÚintÚ spawn_mainÚexit)ÚkwdsÚargÚnameÚvaluerrrr >s   cKshttddƒr(tjdgdd„|jƒDƒSd}|djdd „|jƒDƒƒ;}tjƒ}tg|d |dgSd S) zJ Returns prefix of command line used for spawning a child process rFz--multiprocessing-forkcSsg|] }d|‘qS)z%s=%rr)Ú.0Úitemrrrú Tsz$get_command_line..zWsz#get_command_line..z-cN)ÚgetattrrÚ executableÚitemsÚjoinrZ_args_from_interpreter_flagsr)rÚprogZoptsrrrr Ns cCsjttjƒst‚tjdkr         cCsðd|kr|dtjƒ_d|kr,|dtjƒ_d|krD|drDtjƒd|kr^tjƒj|dƒd|krp|dt_ d|kr‚|dt_ d|kr˜t j |dƒd|krª|dt_ d |krÂt|d d d �d |krØt|d ƒnd |krìt|d ƒdS)zE Try to get current process ready to unpickle process object r!rAr@rBrCrDrFrErGT)ZforcerIrKN)rr7r!rArr@Z get_loggerZsetLevelrrMrr0ÚchdirrQrÚ_fixup_main_from_nameÚ_fixup_main_from_path)Údatarrrr;¿s,   r;cCs~tjd}|dks|jdƒr dSt|jddƒ|kr6dStj|ƒtjdƒ}t j |ddd�}|j j |ƒ|tjd<tjd<dS)NrHz .__main__r!Ú __mp_main__T)Úrun_nameZ alter_sys) rrTÚendswithr'rUÚold_main_modulesÚappendÚtypesÚ ModuleTypeÚrunpyZ run_moduleÚ__dict__rR)Zmod_nameÚ current_mainr\Ú main_contentrrrr_ås    r_cCsˆtjd}tjjtjj|ƒƒd}|dkr.dSt|ddƒ|krBdStj|ƒt j dƒ}t j |dd�}|j j|ƒ|tjd<tjd<dS)NrHrZipythonrJrb)rc)rrTr0rMÚsplitextÚbasenamer'rerfrgrhriZrun_pathrjrR)r]rkZ main_namer\rlrrrr`þs    r`cCs t|ƒdS)z< Set sys.modules['__main__'] to module at main_path N)r`)r]rrrrs)NN)%r0rrirgr2rrrÚcontextrrÚ__all__r.rVrWr'r(ÚlowerrdrMr*Ú exec_prefixrr r rr r rrr?r rer;r_r`rrrrrÚ s>        2&