관리-도구
편집 파일: process.cpython-39.pyc
a �����DOg�.����������������������@���s2��g�d��Z�ddlZddlZddlZddlZddlZddlmZ�zej� e� ���ZW�n�eyf���dZY�n0�dd��Z dd��Zdd ��Zd d��ZG�dd ��d e�ZG�dd��de�ZG�dd��de�ZG�dd��de�Zdae��ae�d�ae��a[i�Zeej� ���D�]0\Z!Z"e!dd��dkr�de!vr�de!���ee"�<�q�e��Z#dS�))�BaseProcess�current_process�active_children�parent_process�����N)�WeakSetc�������������������C���s���t�S�)z@ Return process object representing the current process )�_current_process��r���r����//usr/lib64/python3.9/multiprocessing/process.pyr���%���s����r���c�������������������C���s���t����tt�S�)zN Return list of process objects corresponding to live child processes )�_cleanup�list� _childrenr���r���r���r ���r���+���s����r���c�������������������C���s���t�S�)z? Return process object representing the parent process )�_parent_processr���r���r���r ���r���3���s����r���c������������������C���s*���t�t�D�]}�|�j���d�urt�|���qd�S��N)r���r����_popen�poll�discard)�pr���r���r ���r ���=���s����r ���c�������������������@���s����e�Zd�ZdZdd��Zddddi�fdd�dd�Zd d ��Zdd��Zd d��Zdd��Z dd��Z d,dd�Zdd��Zdd��Z edd���Zejdd���Zedd���Zejdd���Zedd ���Zejd!d ���Zed"d#���Zed$d%���ZeZed&d'���Zd(d)��Zd-d*d+�ZdS�).r���z� Process objects represent activity that is run in a separate process The class is analogous to `threading.Thread` c�����������������C���s���t��d�S�r���)�NotImplementedError��selfr���r���r ����_PopenM���s����zBaseProcess._PopenNr���)�daemonc����������������C���s����|d�u�sJ�d��t�t�}tj|f�|�_tj���|�_t���|�_tj |�_ d�|�_d|�_||�_ t|�|�_t|�|�_|p�t|��jd�d�dd��|�jD����|�_|d�ur�||�_t�|���d�S�)Nz#group argument must be None for nowF�-�:c�����������������s���s���|�]}t�|�V��qd�S�r���)�str)�.0�ir���r���r ���� <genexpr>^��������z'BaseProcess.__init__.<locals>.<genexpr>)�next�_process_counterr���� _identity�_config�copy�os�getpid�_parent_pid�name�_parent_namer����_closed�_target�tuple�_args�dict�_kwargs�type�__name__�join�_namer���� _dangling�add)r����group�targetr'����args�kwargsr����countr���r���r ����__init__P���s"���� �zBaseProcess.__init__c�����������������C���s���|�j�rtd��d�S�)Nzprocess object is closed)r)���� ValueErrorr���r���r���r ���� _check_closedc���s����zBaseProcess._check_closedc�����������������C���s���|�j�r|�j�|�ji�|�j���dS�)zQ Method to be run in sub-process; can be overridden in sub-class N)r*���r,���r.���r���r���r���r ����rung���s����zBaseProcess.runc�����������������C���sz���|������|�jdu�sJ�d��|�jt���ks0J�d��tj�d�rDJ�d��t���|�� |��|�_|�jj |�_|�`|�` |�`t�|���dS�)z% Start child process Nzcannot start a process twicez:can only start a process object created by current processr���z3daemonic processes are not allowed to have children)r<���r���r&���r$���r%���r���r"����getr ���r����sentinel� _sentinelr*���r,���r.���r���r4���r���r���r���r ����startn���s������ zBaseProcess.startc�����������������C���s���|������|�j����dS�)zT Terminate process; sends SIGTERM signal or uses TerminateProcess() N)r<���r���� terminater���r���r���r ���rB�������s����zBaseProcess.terminatec�����������������C���s���|������|�j����dS�)zT Terminate process; sends SIGKILL signal or uses TerminateProcess() N)r<���r����killr���r���r���r ���rC�������s����zBaseProcess.killc�����������������C���sR���|������|�jt���ksJ�d��|�jdus0J�d��|�j�|�}|durNt�|���dS�)z5 Wait until child process terminates zcan only join a child processNzcan only join a started process)r<���r&���r$���r%���r����waitr���r���)r����timeout�resr���r���r ���r1�������s����zBaseProcess.joinc�����������������C���s`���|������|�tu�rdS�|�jt���ks*J�d��|�jdu�r8dS�|�j���}|du�rNdS�t�|���dS�dS�)z1 Return whether process is alive Tzcan only test a child processNF) r<���r���r&���r$���r%���r���r���r���r���)r���� returncoder���r���r ����is_alive����s���� zBaseProcess.is_alivec�����������������C���sH���|�j�dur>|�j����du�r td��|�j�����d|�_�|�`t�|���d|�_dS�)z� Close the Process object. This method releases resources held by the Process object. It is an error to call this method if the child process is still running. Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)r���r���r;����closer@���r���r���r)���r���r���r���r ���rI�������s���� zBaseProcess.closec�����������������C���s���|�j�S�r���)r2���r���r���r���r ���r'�������s����zBaseProcess.namec�����������������C���s���t�|t�sJ�d��||�_d�S�)Nzname must be a string)� isinstancer���r2���)r���r'���r���r���r ���r'�������s����c�����������������C���s���|�j��dd�S�)z4 Return whether process is a daemon r���F)r"���r>���r���r���r���r ���r�������s����zBaseProcess.daemonc�����������������C���s ���|�j�du�sJ�d��||�jd<�dS�)z1 Set whether process is a daemon Nzprocess has already startedr���)r���r"���)r����daemonicr���r���r ���r�������s����c�����������������C���s ���|�j�d�S�)N�authkey)r"���r���r���r���r ���rL�������s����zBaseProcess.authkeyc�����������������C���s���t�|�|�jd<�dS�)z2 Set authorization key of process rL���N)�AuthenticationStringr"���)r���rL���r���r���r ���rL�������s����c�����������������C���s"���|������|�jdu�r|�jS�|�j���S�)zM Return exit code of process or `None` if it has yet to stop N)r<���r���r���r���r���r���r ����exitcode����s���� zBaseProcess.exitcodec�����������������C���s*���|������|�tu�rt���S�|�jo$|�jjS�dS�)zU Return identifier (PID) of process or `None` if it has yet to start N)r<���r���r$���r%���r����pidr���r���r���r ����ident����s����zBaseProcess.identc�����������������C���s2���|������z|�jW�S��ty,���td�d�Y�n0�dS�)z{ Return a file descriptor (Unix) or handle (Windows) suitable for waiting for process termination. zprocess not startedN)r<���r@����AttributeErrorr;���r���r���r���r ���r?�������s ����zBaseProcess.sentinelc�����������������C���s����d�}|�t�u�rd}nL|�jrd}n@|�jt���kr2d}n,|�jd�u�rBd}n|�j���}|d�urZd}nd}t|��jd|�j �g}|�jd�ur�|� d|�jj���|� d|�j���|� |��|d�ur�t� ||�}|� d |���|�jr�|� d ��dd�|��S�) N�started�closed�unknown�initial�stoppedzname=%rzpid=%sz parent=%szexitcode=%sr���z<%s>� )r���r)���r&���r$���r%���r���r���r/���r0���r2����appendrO����_exitcode_to_namer>���r���r1���)r���rN����status�infor���r���r ����__repr__��s0���� zBaseProcess.__repr__c�������������� ���C���s���ddl�m}m}��z`z�|�jd�ur,|�|�j��t�d�at��a |� ���t}|�at|�j |�j|�atjrnt�������z|j����|����W�~n~0�|�d��z|�����d}W�|����n |����0�W�n��t�y �}�zJ|jd�u�r�d}n.t|jt�r�|j}ntj� t!|j�d���d}W�Y�d�}~n:d�}~0����d}dd�l"}tj� d|�j#���|�$���Y�n0�W�t�%���|�d|���|�&���n t�%���|�d|���|�&���0�|S�)N����)�util�contextz child process calling self.run()r���� zProcess %s: z process exiting with exitcode %d)'��r^���r_���� _start_method�_force_start_method� itertoolsr9���r ����setr����_close_stdinr����_ParentProcessr(���r&���r ���� threading�_HAVE_THREAD_NATIVE_ID�main_thread�_set_native_id�_finalizer_registry�clear�_run_after_forkersr[���r=����_exit_function� SystemExit�coderJ����int�sys�stderr�writer���� tracebackr'���� print_exc� _shutdown�_flush_std_streams)r����parent_sentinelr^���r_����old_processrN����erv���r���r���r ���� _bootstrap"��sT���� � � zBaseProcess._bootstrap)N)N)r0���� __module__�__qualname__�__doc__r���r:���r<���r=���rA���rB���rC���r1���rH���rI����propertyr'����setterr���rL���rN���rP���rO���r?���r\���r}���r���r���r���r ���r���G���sD���� r���c�������������������@���s���e�Zd�Zdd��ZdS�)rM���c�����������������C���s,���ddl�m}�|��d�u�rtd��tt|��ffS�)Nr]���)�get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)r_���r����� TypeErrorrM����bytes)r���r����r���r���r ���� __reduce__X��s���� �zAuthenticationString.__reduce__N)r0���r~���r���r����r���r���r���r ���rM���W��s���rM���c�������������������@���s6���e�Zd�Zdd��Zdd��Zedd���Zd dd �ZeZdS�)rg���c�����������������C���s4���d|�_�||�_||�_d�|�_d�|�_d|�_||�_i�|�_d�S�)Nr���F)r!���r2����_pidr&���r���r)���r@���r"���)r���r'���rO���r?���r���r���r ���r:���h��s����z_ParentProcess.__init__c�����������������C���s���ddl�m}�||�jgdd��S�)Nr����rD����rE�����multiprocessing.connectionrD���r@���)r���rD���r���r���r ���rH���r��s����z_ParentProcess.is_alivec�����������������C���s���|�j�S�r���)r����r���r���r���r ���rP���v��s����z_ParentProcess.identNc�����������������C���s ���ddl�m}�||�jg|d��dS�)z6 Wait until parent process terminates r���r����r����Nr����)r���rE���rD���r���r���r ���r1���z��s����z_ParentProcess.join)N) r0���r~���r���r:���rH���r����rP���r1���rO���r���r���r���r ���rg���f��s��� rg���c�������������������@���s���e�Zd�Zdd��Zdd��ZdS�)�_MainProcessc�����������������C���s8���d|�_�d|�_d�|�_d�|�_d|�_tt�d��dd�|�_d�S�)Nr����MainProcessF� ���z/mp)rL���� semprefix) r!���r2���r&���r���r)���rM���r$����urandomr"���r���r���r���r ���r:������s�����z_MainProcess.__init__c�����������������C���s���d�S�r���r���r���r���r���r ���rI������s����z_MainProcess.closeN)r0���r~���r���r:���rI���r���r���r���r ���r�������s���r����r]�������ZSIG�_r���)$�__all__r$���rs����signalrd���rh����_weakrefsetr����path�abspath�getcwd�ORIGINAL_DIR�OSErrorr���r���r���r ����objectr���r����rM���rg���r����r ���r���r9���r ���re���r���rY���r����__dict__�itemsr'����signumr3���r���r���r���r ����<module> ���s<��� ��!