U
    yâh  ã                   @   sZ   d dl mZ d dlmZ d dlZddlmZ ddlmZ e e	¡Z
edd„ ƒZd	d
„ ZdS )é    )Úcontextmanager)ÚcastNé   )Úapi)ÚTensorPipeAgentc                 c   s˜   d}|rdnd}d|› d|› }|   |d|¡ ¡ }||kr\d V  |  |d¡ |  |d¡ q”q z|  |g¡ W q  tk
r   t d||¡ ‚ Y q X q d S )	NZRpcGroupManagementTokenÚjoinZleaveZ
Token_for_Ú_Ú ÚDonezBGroup membership token %s timed out waiting for %s to be released.)Zcompare_setÚdecodeÚsetÚwaitÚRuntimeErrorÚloggerÚerror)ÚstoreÚnameÚis_joinZ	token_keyZjoin_or_leaveZmy_tokenZreturned© r   úN/var/www/html/venv/lib/python3.8/site-packages/torch/distributed/rpc/_utils.pyÚ_group_membership_management
   s    r   c                 C   s"   t tt ¡ ƒ}| | |||¡}|S )N)r   r   r   Z_get_current_rpc_agentÚ_update_group_membership)Zworker_infoZ
my_devicesZreverse_device_mapr   ZagentÚretr   r   r   r   #   s    r   )Ú
contextlibr   Útypingr   Úloggingr	   r   r   Ú	getLoggerÚ__name__r   r   r   r   r   r   r   Ú<module>   s   

