a
    tDf)                     @  sf   d dl mZ d dlZd dlZd dlZzd dlZW n eyF   dZY n0 dZdd Zdd Z	e	 Z
dS )    )annotationsN)	cpu_count	CPU_COUNTc               	   C  s\  dD ]} z~t d|  }t| }W d    n1 s80    Y  t d|  }t| }W d    n1 sp0    Y  ||fW   S  ty   Y q0 qzt d&}|  dd }W d    n1 s0    Y  |ds| d}t d| 2}tt| d	\}}||fW  d    W S 1 s60    Y  W n tyV   Y n0 d
S )N)zcpuacct,cpuzcpu,cpuacctz"/sys/fs/cgroup/%s/cpu.cfs_quota_usz#/sys/fs/cgroup/%s/cpu.cfs_period_usz/proc/self/cgroup:/z/sys/fs/cgroup%scpu.max )NN)openintread	Exceptionstripsplitendswithmap)dirnamefquotaperiodZ
group_path r   X/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/dask/system.py_try_extract_cgroup_cpu_quota   s(    **
4

.r   c                  C  s   t  } tdurJz&tt  }|dkr4t| |} W n tyH   Y n0 tj	dkrt
 \}}|dur|durt|| }|dkrt| |} | S )zGet the available CPU count for this system.

    Takes the minimum value from the following locations:

    - Total system cpus available on the host.
    - CPU Affinity (if set)
    - Cgroups limit (if set)
    Nr   linux)osr   psutillenProcessZcpu_affinityminr   sysplatformr   mathceil)countZaffinity_countr   r   Zcgroups_countr   r   r   r   ,   s    	


r   )
__future__r   r    r   r   r   ImportError__all__r   r   r   r   r   r   r   <module>   s   
 