3 \"@s.ddlZddlZddlZddlZddlmZmZddlmZddlm Z ddlm Z ddd d d d d gZ ej dkrzdZ dZn&ej dkoeeddZ ejjjdZerejjejdanejadd Zdd ZddZddZdd Zd&ddZddZddZdd ZgZ dd Z!d!d"Z"d#d$Z#d%d Z$dS)'N)get_start_methodset_start_method)process) reduction)util_mainfreeze_supportset_executableget_executableget_preparation_dataget_command_lineimport_main_pathwin32Ffrozenzpythonservice.exez python.execCs|adS)N) _python_exe)Zexer-/usr/lib64/python3.6/multiprocessing/spawn.pyr )scCstS)N)rrrrrr -scCs$t|dkr|ddkrdSdSdS)Nrz--multiprocessing-forkTF)len)argvrrr is_forking4srcCshttjrdi}xBtjddD]0}|jd\}}|dkrBd||<qt|||<qWtf|tjdS)Nr=None)rsysrsplitint spawn_mainexit)kwdsargnamevaluerrrr >s   cKshttddr(tjdgdd|jDSd}|djdd |jD;}tj}tg|d |dgSdS) NrFz--multiprocessing-forkcSsg|] }d|qS)z%s=%rr).0itemrrr Tsz$get_command_line..zWsz#get_command_line..z-c)getattrr executableitemsjoinrZ_args_from_interpreter_flagsr)rprogZoptsrrrr Ns cCs\tjdkr.ddl}tj||}|j|tj}nddlm }||j _ |}t |}tj |dS)Nrrr)semaphore_tracker)rplatformmsvcrtrZ steal_handleZopen_osfhandleosO_RDONLYr,Z_semaphore_trackerZ_fdrr)Z pipe_handleZ parent_pidZ tracker_fdr.Z new_handlefdr,Zexitcoderrrr\s   rcCs^tj|ddd@}dtj_z$tjj|}t|tjj|}Wdtj`XWdQRX|j S)NrbT)closefd) r/fdopenrcurrent_process _inheritingrpickleloadprepare _bootstrap)r2Z from_parentZpreparation_dataselfrrrrms  cCsttjddrtddS)Nr7Fa An attempt has been made to start a new process before the current process has finished its bootstrapping phase. This probably means that you are not using fork to start your child processes 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 an executable.)r'rr6 RuntimeErrorrrrr_check_not_importing_mainys r>cCs tttjtjjd}tjdk r2tjj|d<t j j }y|j d}Wnt k r^Yn Xtj||<|j||t jtjtjtdt jd}t|jdd}|dk r||d<nht jdkst ot rt|d d}|dk rtj j| otjdk r tj jtj|}tj j||d <|S) N) log_to_stderrauthkey log_levelr1)r!sys_pathsys_argvorig_dirdir start_method__main__r!init_main_from_namer__file__init_main_from_path)r>dictrZ_log_to_stderrrr6r@Z_loggerZgetEffectiveLevelrpathcopyindex ValueError ORIGINAL_DIRupdaterr/getcwdrmodulesr'__spec__r-WINEXE WINSERVICEisabsr*normpath)r!drBi main_moduleZ main_mod_name main_pathrrrr s>         cCsd|kr|dtj_d|kr,|dtj_d|krD|drDtjd|kr^tjj|dd|krp|dt_ d|kr|dt_ d|krt j |dd|kr|dt_ d |krt|d d d d |krt|d nd |krt|d dS)Nr!r@r?rArBrCrErDrFT)ZforcerHrJ)rr6r!r@rr?Z get_loggerZsetLevelrrLrr/chdirrPr_fixup_main_from_name_fixup_main_from_path)datarrrr:s,   r:cCs~tjd}|dks|jdr dSt|jdd|kr6dStj|tjd}t j |ddd}|j j ||tjd<tjd<dS)NrGz .__main__r! __mp_main__T)run_nameZ alter_sys) rrSendswithr'rTold_main_modulesappendtypes ModuleTyperunpyZ run_module__dict__rQ)Zmod_name current_mainr[ main_contentrrrr^s    r^cCstjd}tjjtjj|d}|dkr.dSt|dd|krBdStj|t j d}t j |dd}|j j||tjd<tjd<dS)NrGrZipythonrIra)rb)rrSr/rLsplitextbasenamer'rdrerfrgrhZrun_pathrirQ)r\rjZ main_namer[rkrrrr_s    r_cCs t|dS)N)r_)r\rrrrs)NN)%r/rrhrfr1rrrcontextrr__all__r-rUrVr'r(lowerrcrLr* exec_prefixrr r rr r rrr>r rdr:r^r_rrrrr s>        2&