/ lib / multiprocessing / spawn.pyc
spawn.pyc
 1  o

 2  5�Hcy%�@sddlZddlZddlZddlZddlmZmZddlmZddlm	Z	ddlm
 3  Z
 4  gd�Zejdkr8d	Z
d	Zneed
 5  d	�Z
ej���d�ZerQej�ejd�anejad
d�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
 6  python.execCs|adS�N��_python_exe)�exe�r�}C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2800.0_x64__qbz5n2kfra8p0\lib\multiprocessing\spawn.pyr
 7  )sr
 8  cCstSrrrrrrr-srcCs t|�dkr|ddkrdSdS)z=
 9      Return whether commandline indicates we are forking
10      �r�--multiprocessing-forkTF)�len)�argvrrr�
11  is_forking4srcCslttj�r4i}tjdd�D]}|�d�\}}|dkr d||<qt|�||<qtdi|��t��dSdS)zE
12      Run code for process object if this in not the main process
13      rN�=�Noner)r�sysr�split�int�
14  spawn_main�exit)�kwds�arg�name�valuerrrr	>s
15  
16  �r	cKsdttdd�rtjdgdd�|��D�Sd}|d�dd	�|��D��;}t��}tg|d
17  |dgS)zJ
18      Returns prefix of command line used for spawning a child process
19      rFrcSsg|]}d|�qS)�%s=%rr��.0�itemrrr�
20  <listcomp>Tsz$get_command_line.<locals>.<listcomp>z<from multiprocessing.spawn import spawn_main; spawn_main(%s)z, css�|]}d|VqdS)r'Nrr(rrr�	<genexpr>Ws�z#get_command_line.<locals>.<genexpr>z-c)�getattrr�
21  executable�items�joinr�_args_from_interpreter_flagsr)r#�prog�optsrrrr
Ns�r
cCs�ttj�s	Jd��tjdkr9ddl}ddl}|dur&|�|j|jBd|�}nd}t	j
22  ||d�}|�|tj
�}|}nddlm}	||	j_|}t�|�}t||�}
23  t�|
24  �dS)	z7
25      Run code specified by data received over pipe
26      zNot forkingrrNF)�source_processr)�resource_tracker)rrr�platform�msvcrt�_winapi�OpenProcess�SYNCHRONIZE�PROCESS_DUP_HANDLEr�	duplicate�open_osfhandle�os�O_RDONLY�r5�_resource_tracker�_fd�duprr")�pipe_handle�
27  parent_pid�
28  tracker_fdr7r8r4�
29  new_handle�fd�parent_sentinelr5�exitcoderrrr!\s*
30  
31  ��
32  
33  r!c	Cs|tj|ddd��)}dt��_ztj�|�}t|�tj�|�}Wt��`nt��`wWd�n1s4wY|�	|�S)N�rbT)�closefd)
34  r>�fdopenr�current_process�_inheritingr�pickle�load�prepare�
35  _bootstrap)rHrIZfrom_parentZpreparation_data�selfrrrrxs
36  �
37  rcCstt��dd�rtd��dS)NrOFa
38          An attempt has been made to start a new process before the
39          current process has finished its bootstrapping phase.
40  
41          This probably means that you are not using fork to start your
42          child processes and you have forgotten to use the proper idiom
43          in the main module:
44  
45              if __name__ == '__main__':
46                  freeze_support()
47                  ...
48  
49          The "freeze_support()" line can be omitted if the program
50          is not going to be frozen to produce an executable.)r-rrN�RuntimeErrorrrrr�_check_not_importing_main�s�rVcCst�ttjt��jd�}tjdurtj��|d<t	j
51  ��}z|�d�}Wn	t
y.Ynwtj||<|j||t	jtjt��t�d�t	jd}t|jdd�}|durZ||d<|St	jd	kscts�ts�t|d
52  d�}|dur�tj
53  �|�s�tjdur�tj
54  �tj|�}tj
55  �|�|d<|S)zM
56      Return info about parent needed by child to unpickle process object
57      )�
log_to_stderr�authkeyN�	log_levelr@)r%�sys_path�sys_argv�orig_dir�dir�start_method�__main__r%�init_main_from_namer�__file__�init_main_from_path)rV�dictr�_log_to_stderrrrNrX�_logger�getEffectiveLevelr�path�copy�index�
58  ValueError�ORIGINAL_DIR�updaterr>�getcwdr�modulesr-�__spec__r6�WINEXE�
59  WINSERVICE�isabsr0�normpath)r%�drZ�i�main_module�
main_mod_name�	main_pathrrrr�sF�
60  
61  �
62  �
63  	�
64  rcCs�d|vr|dt��_d|vr|dt��_d|vr"|dr"t��d|vr/t���|d�d|vr8|dt_	d|vrA|dt_
65  d|vrLt�|d�d|vrU|dt_
d	|vrat|d	d
66  d�d|vrmt|d�dSd
|vryt|d
�dSdS)zE
67      Try to get current process ready to unpickle process object
68      r%rXrWrYrZr[r]r\r^T)�forcer`rbN)rrNr%rXrrW�
69  get_logger�setLevelrrgrr>�chdirrkr�_fixup_main_from_name�_fixup_main_from_path)�datarrrrR�s.
70  
71  
72  �rRcCs~tjd}|dks|�d�rdSt|jdd�|krdSt�|�t�d�}t	j
73  |ddd�}|j�|�|tjd<tjd<dS)Nr_z	.__main__r%�__mp_main__T)�run_name�	alter_sys)
rrn�endswithr-ro�old_main_modules�append�types�
74  ModuleType�runpy�
75  run_module�__dict__rl)�mod_name�current_mainrv�main_contentrrrr}�s
76  
77  
78  �r}cCs�tjd}tj�tj�|��d}|dkrdSt|dd�|kr!dSt�|�t	�
79  d�}tj|dd�}|j
�|�|tjd<tjd<dS)Nr_r�ipythonrar�)r�)rrnr>rg�splitext�basenamer-r�r�r�r�r��run_pathr�rl)rxr��	main_namervr�rrrr~	s
80  
81  
82  �r~cCst|�dS)z<
83      Set sys.modules['__main__'] to module at main_path
84      N)r~)rxrrrr%sr)NN)%r>rr�r�r@rrr�contextrr�__all__r6rprqr-r.�lowerr�rgr0�exec_prefixrr
85  rrr	r
r!rrVrr�rRr}r~rrrrr�<module>s>
86  
87  
88  
89  2&