
    0Fiex                    8    d dl mZ d dlZd dlmZ d
dZefd	ZdS )    )annotationsN)	CPU_COUNTnintreturnset[int]c           
           fdt          dt          t           d          dz                       D             }d |D             S )zTReturn the factors of an integer
    https://stackoverflow.com/a/6800214/616616
    c              3  8   K   | ]}|z  d k    ||z  gV  dS )r   N ).0ir   s     8lib/python3.11/site-packages/distributed/deploy/utils.py	<genexpr>z_factors.<locals>.<genexpr>   s3      
M
M1!a%1**AqAv;****
M
M       g      ?c                    h | ]	}|D ]}|
S r   r   )r   itemjs      r   	<setcomp>z_factors.<locals>.<setcomp>   s%    ,,,$t,,!A,,,,r   )ranger   pow)r   seqs   ` r   _factorsr      sQ     N
M
M
MaSC[[1_)=)= > >
M
M
MC,,#,,,,r   c                x      dk    r }n(t           fdt                     D                       } |z  }||fS )aC  
    The default breakdown of processes and threads for a given number of cores

    Parameters
    ----------
    n : int
        Number of available cores

    Examples
    --------
    >>> nprocesses_nthreads(4)
    (4, 1)
    >>> nprocesses_nthreads(32)
    (8, 4)

    Returns
    -------
    nprocesses, nthreads
       c              3  L   K   | ]}|t          j                  k    |V  d S )N)mathsqrt)r   fr   s     r   r   z&nprocesses_nthreads.<locals>.<genexpr>'   s5      DDa!ty||2C2C2C2C2C2CDDr   )minr   )r   	processesthreadss   `  r   nprocesses_nthreadsr#      sQ    ( 	Avv		DDDD8A;;DDDDD	9nGwr   )r   r   r   r   )
__future__r   r   dask.systemr   r   r#   r   r   r   <module>r&      si    " " " " " "  ! ! ! ! ! !- - - - $            r   