³ò
9;RJc           @   s×   d  d k  l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionNc         C   s   d |  | | f S(   Ns   %s_gspa_%s_nacc_%s(    (   t   algo_prefixt   gspat   nacc(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_default_data_dir_name   s    c         C   s   d |  | | f S(   Ns   %s_gspa_%s_nacc_%s_a(    (   R   R   R   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_default_analysis_dir_name   s    c         C   s;   t  i d d | ƒ } t  i d d | ƒ } d |  | | f S(   Nt    t   _t   =s   L_%s_T_%s_%s.txt(   t   ret   sub(   t   Lt   Tt   aargt   farg(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_RV_file_name   s    c         C   s8   t  i d d |  ƒ } t  i d d | ƒ } d | | f S(   NR   R   R   s   graph_%s_%s.txt(   R	   R
   (   R   t   RV_nice_nameR   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_graph_file_name$   s    c         C   sL   t  i d |  ƒ d j o d Sn' t  i d |  ƒ d j o d Sn d Sd  S(   Ns   test -f i    s   grep -q Elapsed %s i   (   t   ost   system(   t   file(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   is_RV_file_complete*   s
    c   	      C   sš   d |  t  | | | ƒ f } t | ƒ pd d | | | | | | f } t i | ƒ } | d j o( t i d | | f IJt i d ƒ q– n
 d | GHd  S(   Ns   %s/%ss   %s L=%s T=%s %s %s > %si    s    rc %d from command %s.  Exiting.i   s	   Complete (   R   R   R   R   t   syst   stderrt   exit(	   t   datadirt   exet   common_argsR   R   R   R   t   cmdt   rc(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   execute_task_unless_complete3   s    
c         C   sõ   y t  i |  ƒ Wn n Xd | | | f } t | ƒ }	 g  }
 x€ | D]x } t  i ƒ  } | d j oL x8 | D]0 } x' | D] } t |  | | | | | ƒ qz Wqm Wt i d ƒ qG |
 i | ƒ qG Wx+ t d |	 ƒ D] } t  i	 |
 | d ƒ qÓ Wd  S(   Ns   %s gspa=%s nacc=%si    (
   R   t   mkdirt   lent   forkR   R   R   t   appendt   ranget   waitpid(   t   ddirR   t   algoR   R   t   Lst   Tst   aargsR   t   ncput   pidsR   t   pidR   R   t   i(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   execute_multi_CPU_by_TC   s(        c         C   sS   g  } xF | D]> } x5 | D]- } x$ |  D] } | i  | | | g ƒ q' Wq Wq W| S(   N(   R"   (   R'   R(   R)   t   listR   R   R   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   flatten_Ls_Ts_aargsZ   s       "c	      
   C   s(  y t  i |  ƒ Wn n Xd | | | f }	 t | | | ƒ }
 g  } d GHd | GHd t | ƒ t | ƒ t | ƒ t |
 ƒ f GHx|
 g  j ot | ƒ | j  o |
 i d ƒ \ } } } t  i ƒ  } | d j o* t |  | |	 | | | ƒ t i d ƒ qœ| i	 | ƒ d | | | | f GHd G| GHd GHq„ d GHt  i
 d ƒ \ } } } d	 GH| d j  o d
 | GHq„ d | GHd G| GHd GH| i | ƒ d G| GHq„ Wx{ | g  j om d GHt  i
 d ƒ \ } } } d	 GH| d j  o d
 | GHq¤d | GHd G| GHd GH| i | ƒ d G| GHq¤Wd GHd  S(   Ns   %s gspa=%s nacc=%st    s$   execute multi CPU enter.  ncpu = %d.s'   #Ls: %d; #Ts: %d; #aargs: %d; total: %di    s$   Forked PID %d for L=%s T=%s aarg=%s.s   Processes: s%   Waiting for a process to complete ...s   done waiting.s(   wait3 returned %d.  What does that mean?s   PID %d completes	   status = s   execute multi CPU exit.(   R   R   R0   R    t   popR!   R   R   R   R"   t   wait3t   remove(   R%   R   R&   R   R   R'   R(   R)   R*   R   t   unstarted_taskst	   processesR   R   R   R,   t   statust   usage(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   execute_multi_CPUc   sT    	*						c         C   s~   y t  i |  ƒ Wn n Xd | | | f } xI | D]A }	 x8 | D]0 }
 x' | D] } t |  | | |
 |	 | ƒ qO WqB Wq5 Wd  S(   Ns   %s gspa=%s nacc=%s(   R   R   R   (   R%   R   R&   R   R   R'   R(   R)   R   R   R   R   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   execute_single_CPU_by_T   s       c         C   s,  x$| D]} d |  | f GHx| D]û } d } d } d } d }	 x¬ | D]¤ }
 d |  t  | |
 | ƒ f } t i d | ƒ d j o" | d 7} |	 o d | GHqì qH t i d | ƒ d j o" | d 7} |	 o d | GHqì qH | d 7} qH W| | | } d	 | | | | d
 | | f GHq# WHq WHd  S(   Ns   %s %si    s   %s/%ss   test -f i   s	   Missing  s   grep -q Elapsed %s s	   Fragment s7     L=%2s missing %4d fragment %4d complete %4d    %3.f%%g      Y@(   R   R   R   (   R%   R'   R(   R)   R   R   t   nmissingt	   nfragmentt	   ncompletet
   printfilesR   R   t   ntotal(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   report_progress_by_L§   s4       

!c         C   sú   y t  | d ƒ } Wn) t i d | d IJt i d ƒ n Xd } xŠ | i ƒ  } | d j o Pn t i d d | ƒ } d |  } t i | | ƒ o7 | i ƒ  t i d	 d | ƒ } | i	 ƒ  } | d
 SqH qH t i d |  | f IJt i d ƒ d  S(   Nt   rs   Couldn't open "s   " for read.i   i    R1   s   \n+$s   ^#.*%s s   \s+$iÿÿÿÿs   Couldn't find "%s" in "%s".(
   t   openR   R   R   t   readlineR	   R
   t   matcht   closet   split(   t   RV_namet	   file_namet   file_handlet   got_itt   linet   patternt   fields(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_random_variablefÇ   s(    


c         C   s#   d | t  |  ƒ f } t | | ƒ S(   Ns   %s/%s(   t   task_to_file_nameRN   (   t   taskRG   t   data_dirRH   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   get_random_variableÞ   s    c         C   sü   y t  i | ƒ Wn n X| \ } } g  } t | ƒ }	 x} t d |	 ƒ D]l }
 | |
 } g  } xF | D]> } d |  t | | | ƒ f } t | | ƒ } | i | ƒ qf W| i | ƒ qI Wd | t | | ƒ f } d | Gt | d | d | | ƒ d GHd  S(   Ni    s   %s/%ss   Writing %s ...R   R   s   done.(	   R   R   R    R#   R   RN   R"   R   t   print_RVs_with_labels(   R%   t   adirR'   R(   R   t   RV_name_pairt   RV_data_nameR   t   RV_datat   nLt   iLR   t   Li_dataR   t   dfilet   RV_valuet
   graph_file(    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyt   extract_RV_from_Ls_Ts_aargsã   s&     
 c         C   s~  t  |  ƒ } t  |  d ƒ } | d j o t i } n@ y t | d ƒ } Wn) t i d | d IJt i d ƒ n X| d | Ix/ t d | ƒ D] }	 | d | | |	 f Iq“ W| J| d	 Ix= t d | ƒ D], }	 | d t  | ƒ d t  | |	 ƒ IqÓ W| JxU t d | ƒ D]D }
 | | |
 Ix) t d | ƒ D] }	 | |  |	 |
 Iq;W| JqW| d j o | i ƒ  n d  S(
   Ni    t   -t   ws   Couldn't open "s   " for write.i   s   #%s s   %s=%ss   # (   R    R   t   stdoutRB   R   R   R#   RE   (   t   L_datat   x_namet   x_labelst   y_namet   y_labelsRH   t   num_colst   num_rowsRI   t   jR-   (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pyRS   ü   s:     
 *  (   t
   __future__R    t   platformR   R   R	   t   timeR   R   R   R   R   R   R.   R0   R9   R:   R@   RN   RR   R^   RS   (    (    (    s:   /home/u30/kerl/pub_http_internet/rcm/taskutil/otaskutil.pys   <module>   s(   											:	
	 			