ó
ßüÚ\c           @   s<  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z e j Z e j ƒ  Z e ƒ  Z e j ƒ  e j d d e d d d d ƒe j d d e d d d d ƒe j d d e d d d d ƒe j d d d d d ƒe j d d d d e d d ƒe j d d e  d d ƒe j d d e  d d ƒe j d  d e d d! d d" ƒe j d# d e d d$ d d% ƒe j d& d e d d d d' ƒd( „  ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ ƒ Z! d) „  Z" e# d* k r8e" ƒ  n  d S(+   iÿÿÿÿ(   t   partialN(   t   MPI(   t   IOLoop(   t   gen(   t   warn(   t	   Schedulert   Nannyt   Worker(   t   BokehWorker(   t   check_python_3t   uri_from_host_port(   t   get_ip_interfaces   --scheduler-filet   typet   defaults   scheduler.jsont   helps0   Filename to JSON encoded scheduler information. s   --interfaces&   Network interface like 'eth0' or 'ib0's
   --nthreadsi    s   Number of threads per worker.s   --memory-limitt   autosx   Number of bytes before spilling data to disk. This can be an integer (nbytes) float (fraction of total memory) or 'auto's   --local-directoryt    s   Directory to place worker filess   --scheduler/--no-schedulers^   Whether or not to include a scheduler. Use --no-scheduler to increase an existing dask clusters   --nanny/--no-nannys-   Start workers in nanny process for managements   --bokeh-portiS"  s!   Bokeh port for visual diagnosticss   --bokeh-worker-portiU"  s*   Worker's Bokeh port for visual diagnosticss   --bokeh-prefixs   Prefix for the bokeh appc
            s°  | r t  | ƒ }
 n d  }
 t d k rÝ | rÝ y d d l m } Wn t k
 rZ i  } n  Xi t | d | ƒd | f 6} t d |  d t d | ƒ } t	 |
 d  d	 ƒ ‰  | j
 ˆ  ƒ z t j
 ƒ  t j ƒ  Wd  | j ƒ  XnÏ | ré t n t } | d |  d t d
 | rt n d  d | d | d i t d |	 f 6d | ƒ ‰ t	 |
 d  d ƒ ‰  t j ‡  ‡ f d †  ƒ } z t j | ƒ t j ƒ  Wd  Xt j ‡ f d †  ƒ } t j | ƒ d  S(   Ni    iÿÿÿÿ(   t   BokehSchedulert   prefixt   bokeht   scheduler_filet   loopt   servicesiR"  t   namet   ncorest	   local_dirt   memory_limitc           3   s6   ˆ j  ˆ  ƒ Vx! ˆ j d k r1 t j d ƒ Vq Wd  S(   Nt   closedgš™™™™™É?(   t   _startt   statusR   t   sleep(    (   t   addrt   worker(    s7   lib/python2.7/site-packages/distributed/cli/dask_mpi.pyt   runr   s    c           3   s   ˆ  j  d d ƒ Vd  S(   Nt   timeouti   (   t   _close(    (   R    (    s7   lib/python2.7/site-packages/distributed/cli/dask_mpi.pyt   close~   s    (   R   t   Nonet   rankt   distributed.bokeh.schedulerR   t   ImportErrorR    R   R   R
   t   startR$   t   stopR   R   R   R   t	   coroutinet   run_sync(   R   t	   interfacet   nthreadst   local_directoryR   t	   schedulert
   bokeh_portt   bokeh_prefixt   nannyt   bokeh_worker_portt   hostR   R   t   WR!   R$   (    (   R   R    s7   lib/python2.7/site-packages/distributed/cli/dask_mpi.pyt   main   sF    9

	c           C   s   t  ƒ  t d ƒ t ƒ  d  S(   Ns³   The dask-mpi command line utility in the `distributed` package is deprecated.  Please install the `dask-mpi` package instead. More information is available at https://mpi.dask.org(   R	   R   R7   (    (    (    s7   lib/python2.7/site-packages/distributed/cli/dask_mpi.pyt   go…   s    t   __main__($   t	   functoolsR    t   clickt   mpi4pyR   t   tornado.ioloopR   t   tornadoR   t   warningsR   t   distributedR   R   R   t   distributed.bokeh.workerR   t   distributed.cli.utilsR	   R
   t   distributed.utilsR   t
   COMM_WORLDt   commt   Get_rankR&   R   t   commandt   optiont   strR%   t   intt   TrueR7   R8   t   __name__(    (    (    s7   lib/python2.7/site-packages/distributed/cli/dask_mpi.pyt   <module>   s\   			HE	