<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Œ=Ý_]y  ã               @   s–  d Z ddlZddlZddlZddlZddlm  m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 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 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 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! ddlm"Z" g Z#erzej$ej%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ej0ej1iZ2n~er¾ej$ej%ej(ej)ej*ej+ej3ej-ej,ej-ej&ej4ej5ej'iZ2n:erøej$ej%ej(ej)ej*ej+ej,ej-ej&ej4ej5ej'iZ2ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMiZNe O¡ ZPejQZQeRedƒZSeRedƒZTeRedƒZUeRedƒZVeWdddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4ZXe
d5d6d7d8d9d:d;d<d=d>d?d@gƒZYe
dAdBdCdDdEdFgƒZZe
dGdHdIdJdKdLgƒZ[e[Z\e
dMdBdDdNdOgƒZ]e
dPdQƒZ^e
dRdSƒZ_er^e
dTdUdVdWdXdYdZd[gƒZ`ne
dTdUdVdWdXgƒZ`d\d]„ Zad^d_„ Zbd`da„ ZceSr˜dbd„ Zdndcd„ Zddded_ededf„ ZfesºerÄdgdh„ Zgndidh„ Zgdjdk„ ZhdŠdldm„ZiejjZjejkZkejlZlejmZmdndo„ Zndpdq„ Zoer$drds„ Zpdtdu„ Zqdvdw„ Zrdxdy„ Zsdzd{„ Zted|d}„ ƒZud~d„ ZvesTer^d€d„ ZwnejwZwd‚dƒ„ Zxd„d…„ Zyejzd†d‡„ ƒZ{G dˆd‰„ d‰e|ƒZ}dS )‹z5FreeBSD, OpenBSD and NetBSD platforms implementation.é    N)Ú
namedtuple)Údefaultdicté   )Ú_common)Ú_psposix)Ú_psutil_bsd)Ú_psutil_posix)ÚAccessDenied)Ú	conn_tmap)Úconn_to_ntuple)ÚFREEBSD)Úmemoize)Úmemoize_when_activated)ÚNETBSD)ÚNoSuchProcess)ÚOPENBSD)Úusage_percent)ÚZombieProcess)ÚFileNotFoundError)ÚPermissionError)ÚProcessLookupError)ÚwhichÚper_cpu_timesÚproc_num_threadsÚproc_open_filesÚproc_num_fdsé   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   )ÚppidÚstatusÚreal_uidÚeffective_uidÚ	saved_uidÚreal_gidÚeffective_gidÚ	saved_gidÚttynrÚcreate_timeÚctx_switches_volÚctx_switches_unvolÚread_io_countÚwrite_io_countÚ	user_timeÚsys_timeÚch_user_timeÚch_sys_timeÚrssÚvmsÚmemtextÚmemdataÚmemstackÚcpunumÚnameÚsvmemÚtotalZ	availableÚpercentÚusedÚfreeÚactiveÚinactiveÚbuffersÚcachedÚsharedÚwiredÚ	scputimesÚuserÚniceÚsystemÚidleÚirqÚpmemrE   rF   ÚtextÚdataÚstackÚ	pcputimesÚchildren_userÚchildren_systemÚpmmap_groupedz*path rss, private, ref_count, shadow_countÚ	pmmap_extz6addr, perms path rss, private, ref_count, shadow_countÚsdiskioÚ
read_countÚwrite_countÚ
read_bytesÚwrite_bytesÚ	read_timeÚ
write_timeZ	busy_timec              C   sÈ   t  ¡ } | \}}}}}}}}tr‚tddƒR}	xJ|	D ]B}
|
 d¡rVt|
 ¡ d ƒd }q2|
 d¡r2t|
 ¡ d ƒd }q2W W dQ R X || | }|| | }t|| |dd}t|||||||||||ƒS )	z&System virtual memory as a namedtuple.z/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:N)Úround_)	ÚcextZvirtual_memr   ÚopenÚ
startswithÚintÚsplitr   rL   )ZmemrM   rP   rQ   rR   rV   rT   rS   rU   ÚfÚlineZavailrO   rN   © rv   ú@/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psbsd.pyÚvirtual_memory³   s    


"rx   c              C   s4   t  ¡ \} }}}}t|| dd}t | |||||¡S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   )rn   )ro   Zswap_memr   r   Ússwap)rM   rO   rP   ÚsinÚsoutrN   rv   rv   rw   Úswap_memoryÇ   s    r|   c              C   s"   t  ¡ \} }}}}t| ||||ƒS )z+Return system per-CPU times as a namedtuple)ro   Ú	cpu_timesrW   )rX   rY   rZ   r[   r\   rv   rv   rw   r}   Ó   s    r}   c              C   sB   g } x8t  ¡ D ],}|\}}}}}t|||||ƒ}|  |¡ qW | S )z'Return system CPU times as a namedtuple)ro   r   rW   Úappend)ÚretZcpu_trX   rY   rZ   r[   r\   Úitemrv   rv   rw   r   Ú   s    c               C   s.   t ƒ dkrtƒ gS tjr tdƒ‚dt_tƒ gS )z'Return system CPU times as a namedtupler   z&supported only starting from FreeBSD 8T)Úcpu_count_logicalr}   r   Ú
__called__ÚNotImplementedErrorrv   rv   rv   rw   r   ê   s    
Fc               C   s   t  ¡ S )z0Return the number of logical CPUs in the system.)ro   r   rv   rv   rv   rw   r   ö   s    r   c               C   s   t ƒ dkrdS d S )Nr   )r   rv   rv   rv   rw   Úcpu_count_physicalü   s    r„   c              C   sx   d} t  ¡ }|dk	rb| d¡}|dkrb|d|d … }t |¡}zt| d¡ƒpRd} W d| ¡  X | sttƒ dkrtdS | S )z1Return the number of physical CPUs in the system.Nz	</groups>éÿÿÿÿr#   zgroup/children/group/cpur   )	ro   Zcpu_count_physÚrfindÚETZ
fromstringÚlenÚfindallÚclearr   )r   ÚsÚindexÚrootrv   rv   rw   r„      s    



c        	   	   C   sœ   t rt ¡ \} }}}}nttrrt ¡ \} }}}}}}tddƒ.}x&|D ]}| d¡rDt| ¡ d ƒ}qDW W dQ R X ntrŒt ¡ \} }}}}}}t	 
| |||¡S )z*Return various CPU stats as a named tuple.z
/proc/statrm   s   intrr   N)r   ro   Ú	cpu_statsr   rp   rq   rr   rs   r   r   Ú	scpustats)	ZctxswZintrsZ
soft_intrsÚsyscallsZtrapsZfaultsZforksrt   ru   rv   rv   rw   rŽ     s    

 rŽ   c          	   C   sP   g }t  ¡ }x>|D ]6}|\}}}}d }}	t ||||||	¡}
| |
¡ qW |S )z”Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906
    N)ro   Údisk_partitionsr   Ú	sdiskpartr~   )ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚmaxfileÚmaxpathÚntuplerv   rv   rw   r‘   ?  s    
r‘   c              C   s    t ƒ  ¡ } i }xŒ| D ]„}y&t |¡}t |¡}t |¡\}}W n0 tk
rn } z|jtjkr^‚ W dd}~X Y qX t	t
dƒr„t
 |¡}t
 ||||¡||< qW |S )z)Get NIC stats (isup, duplex, speed, mtu).NÚ	NicDuplex)Únet_io_countersÚkeysÚ
cext_posixZ
net_if_mtuZnet_if_is_runningZnet_if_duplex_speedÚOSErrorÚerrnoZENODEVÚhasattrr   rž   Ú	snicstats)Únamesr   rK   ÚmtuÚisupÚduplexÚspeedÚerrrv   rv   rw   Únet_if_stats\  s    





r¬   c          
   C   s&  t rzg }xltƒ D ]b}yt|ƒ | ¡}W n ttfk
r@   wY qX x.|D ]&}t|ƒ}| |¡ | tj	|Ž ¡ qHW qW |S | tj
kr¤td| d dd„ t
D ƒ¡f ƒ‚t
|  \}}tƒ }trÆt d¡}nt ¡ }xN|D ]F}|\}	}
}}}}}|
|krÔ||krÔt|	|
||||t|ƒ}| |¡ qÔW t|ƒS )z System-wide network connections.z+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |ƒ‘qS rv   )Úrepr)Ú.0Úxrv   rv   rw   ú
<listcomp>‚  s    z#net_connections.<locals>.<listcomp>r…   )r   ÚpidsÚProcessÚconnectionsr   r   Úlistr~   r   Úsconnr
   Ú
ValueErrorÚjoinÚsetr   ro   Únet_connectionsr   ÚTCP_STATUSESÚadd)Úkindr   ÚpidZconsZconnÚfamiliesÚtypesÚrawlistr€   ÚfdÚfamÚtypeÚladdrÚraddrr4   Úntrv   rv   rw   r¹   p  s6    



r¹   c              C   sb   yt  ¡ \} }}W n tk
r&   dS X |dk}|r<tj}n|dkrLtj}n|d }t | ||¡S )zReturn battery info.Nr   r…   é<   )ro   Úsensors_batteryrƒ   r   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNÚsbattery)rN   ZminsleftÚpower_pluggedÚsecsleftrv   rv   rw   rÈ   š  s    rÈ   c           	   C   sz   t tƒ} tƒ }xft|ƒD ]Z}y@t |¡\}}|dkr8d}d| }| d  t ||||¡¡ W q t	k
rp   Y qX qW | S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore %sZcoretemp)
r   r´   r   Úrangero   Zsensors_cpu_temperaturer~   r   Úshwtemprƒ   )r   Únum_cpusÚcpuÚcurrentÚhighrK   rv   rv   rw   Úsensors_temperaturesª  s    
rÔ   c           
   C   sÞ   g } t ƒ }xÎt|ƒD ]Â}yt |¡\}}W n tk
r@   wY nX |rÂy t| d¡d  d¡d ƒ}W n ttfk
r‚   d}Y nX y t| d¡d  d¡d ƒ}W n ttfk
rÀ   d}Y nX |  	t
 |||¡¡ qW | S )zªReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
        ú r…   ú/r   N)r   rÎ   ro   Zcpu_frequencyrƒ   rr   rs   Ú
IndexErrorr¶   r~   r   Úscpufreq)r   rÐ   rÑ   rÒ   Zavailable_freqZmin_freqZmax_freqrv   rv   rw   Úcpu_freq»  s$     
 
rÙ   c               C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)ro   Ú	boot_timerv   rv   rv   rw   rÚ   Ù  s    rÚ   c        	      C   sj   g } t  ¡ }xX|D ]P}|\}}}}}|dkr8ts4t‚d}|dkrBqt ||pNd|||¡}|  |¡ qW | S )z:Return currently connected users as a list of namedtuples.r…   Nú~)ro   Úusersr   ÚAssertionErrorr   Úsuserr~   )	r”   rÀ   r€   rX   ÚttyÚhostnameZtstampr½   rÆ   rv   rv   rw   rÜ   Þ  s    
rÜ   c               C   s@   yt dƒ ¡  W n& tk
r$   dS  tk
r6   dS X dS d S )Nr   FT)r²   rK   r   r	   rv   rv   rv   rw   Ú_pid_0_existsó  s    rá   c              C   s*   t  ¡ } tr&d| kr&tƒ r&|  dd¡ | S )z7Returns a list of PIDs currently running on the system.r   )ro   r±   r   rá   Úinsert)r   rv   rv   rw   r±   ÿ  s    r±   c             C   s    t  | ¡}|s| tƒ kS dS dS )zReturn True if pid exists.TN)r   Ú
pid_existsr±   )r½   Úexistsrv   rv   rw   rã   
  s    

rã   c             C   s6   yt  | ¡td  }|t jkS  tk
r0   dS X d S )Nr4   F)ro   Úproc_oneshot_infoÚkinfo_proc_mapÚSZOMBÚ	Exception)r½   Ústrv   rv   rw   Ú	is_zombie  s
    
rê   c                s   t  ˆ ¡‡ fdd„ƒ}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                s°   yˆ | f|ž|ŽS  t k
rP   t| jƒr>t| j| j| jƒ‚nt| j| jƒ‚Y n\ tk
rp   t| j| jƒ‚Y n< t	k
rª   | jdkr¤dt
ƒ kr¢t| j| jƒ‚n‚ ‚ Y nX d S )Nr   )r   rê   r½   r   Ú_nameÚ_ppidr   r   r	   r¢   r±   )ÚselfÚargsÚkwargs)Úfunrv   rw   Úwrapper#  s    


z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rð   rñ   rv   )rð   rw   Úwrap_exceptions  s    rô   c          	   c   st   y
dV  W nd t tfk
rN   t| jƒr<t| j| j| jƒ‚nt| j| jƒ‚Y n" tk
rn   t	| j| jƒ‚Y nX dS )z8Same as above, for routines relying on reading /proc fs.N)
r   r   rê   r½   r   rë   rì   r   r   r	   )Úinstrv   rv   rw   Úwrap_exceptions_procfs8  s    

rö   c               @   sä  e Zd ZdZddddgZdd„ Zdd	„ Zeed
d„ ƒƒZ	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZerÄed"d#„ ƒZed$d%„ ƒZeZed&d'„ ƒZed(d)„ ƒZed*d+„ ƒZed,d-„ ƒZedOd/d0„ƒZedPd2d3„ƒZed4d5„ ƒZed6d7„ ƒZ ed8d9„ ƒZ!ed:d;„ ƒZ"ed<d=„ ƒZ#e$d>d?ƒZ%e$d>d@ƒZ&dAdB„ Z'e(rŒedCdD„ ƒZ)ne'Z)e*r¤edEdF„ ƒZ+ne'Z+eràedGdH„ ƒZ,edIdJ„ ƒZ-edKdL„ ƒZ.edQdMdN„ƒZ/d1S )Rr²   z1Wrapper class around underlying C implementation.r½   rë   rì   Ú_cachec             C   s   || _ d | _d | _d S )N)r½   rë   rì   )rí   r½   rv   rv   rw   Ú__init__N  s    zProcess.__init__c             C   s   t  | j¡ dS )z+Raise NSP if the process disappeared on us.N)ro   Ú	proc_namer½   )rí   rv   rv   rw   Ú_assert_aliveS  s    zProcess._assert_alivec             C   s$   t  | j¡}t|ƒttƒks t‚|S )z;Retrieves multiple process info in one shot as a raw tuple.)ro   rå   r½   rˆ   ræ   rÝ   )rí   r   rv   rv   rw   ÚoneshotY  s    zProcess.oneshotc             C   s   | j  | ¡ d S )N)rû   Úcache_activate)rí   rv   rv   rw   Úoneshot_entera  s    zProcess.oneshot_enterc             C   s   | j  | ¡ d S )N)rû   Úcache_deactivate)rí   rv   rv   rw   Úoneshot_exitd  s    zProcess.oneshot_exitc             C   s(   |   ¡ td  }|d k	r|S t | j¡S )NrK   )rû   ræ   ro   rù   r½   )rí   rK   rv   rv   rw   rK   g  s    zProcess.namec          	   C   sv   t r| jdkrdS t | j¡S trR| jdkr0dS t| ƒ t d| j ¡S Q R X n |  ¡ }|rnt	|d ƒpldS dS d S )Nr   Ú z/proc/%s/exe)
r   r½   ro   Zproc_exer   rö   ÚosÚreadlinkÚcmdliner   )rí   r  rv   rv   rw   Úexel  s    


zProcess.exec          
   C   s¨   t r| jdkrg S tr˜yt | j¡S  tk
r” } zT|jtjkr‚t| jƒr^t	| j| j
| jƒ‚q„t| jƒs|t| j| j
| jƒ‚q„g S n‚ W d d }~X Y q¤X nt | j¡S d S )Nr   )r   r½   r   ro   Zproc_cmdliner¢   r£   ÚEINVALrê   r   rë   rì   rã   r   )rí   r«   rv   rv   rw   r  „  s    

zProcess.cmdlinec             C   s   t  | j¡S )N)ro   Zproc_environr½   )rí   rv   rv   rw   Úenvironž  s    zProcess.environc             C   s:   |   ¡ td  }t ¡ }y|| S  tk
r4   d S X d S )Nr;   )rû   ræ   r   Zget_terminal_mapÚKeyError)rí   Ztty_nrZtmaprv   rv   rw   Úterminal¢  s    zProcess.terminalc             C   s   |   ¡ td  | _| jS )Nr3   )rû   ræ   rì   )rí   rv   rv   rw   r3   «  s    zProcess.ppidc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr5   r6   r7   )rû   r   Úpuidsræ   )rí   Úrawtuplerv   rv   rw   Úuids°  s
    

zProcess.uidsc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr8   r9   r:   )rû   r   Úpgidsræ   )rí   r
  rv   rv   rw   Úgids¸  s
    

zProcess.gidsc             C   s8   |   ¡ }t |td  |td  |td  |td  ¡S )NrA   rB   rC   rD   )rû   r   ra   ræ   )rí   r
  rv   rv   rw   r}   À  s    


zProcess.cpu_timesc             C   s   |   ¡ td  S )NrJ   )rû   ræ   )rí   rv   rv   rw   Úcpu_numÊ  s    zProcess.cpu_numc             C   s@   |   ¡ }t|td  |td  |td  |td  |td  ƒS )NrE   rF   rG   rH   rI   )rû   r]   ræ   )rí   r
  rv   rv   rw   Úmemory_infoÎ  s    



zProcess.memory_infoc             C   s   |   ¡ td  S )Nr<   )rû   ræ   )rí   rv   rv   rw   r<   Ú  s    zProcess.create_timec             C   s    t rt | j¡S t|  ¡ ƒS d S )N)ÚHAS_PROC_NUM_THREADSro   r   r½   rˆ   Úthreads)rí   rv   rv   rw   Únum_threadsÞ  s    zProcess.num_threadsc             C   s$   |   ¡ }t |td  |td  ¡S )Nr=   r>   )rû   r   Úpctxswræ   )rí   r
  rv   rv   rw   Únum_ctx_switchesæ  s    
zProcess.num_ctx_switchesc             C   sL   t  | j¡}g }x*|D ]"\}}}t |||¡}| |¡ qW trH|  ¡  |S )N)ro   Zproc_threadsr½   r   Úpthreadr~   r   rú   )rí   rÀ   r”   Z	thread_idÚutimeZstimer   rv   rv   rw   r  í  s    zProcess.threadsÚinetc          	   C   s"  |t kr(td|d dd„ t D ƒ¡f ƒ‚tr´t | \}}g }t | j¡}xZ|D ]R}|\}}}	}
}}}|| jksrt‚||krN|	|krNt|||	|
||t	ƒ}| 
|¡ qNW |  ¡  t|ƒS t | \}}t | j||¡}g }x:|D ]2}|\}}}	}
}}t|||	|
||t	ƒ}| 
|¡ qÚW tr|  ¡  |S )Nz+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |ƒ‘qS rv   )r­   )r®   r¯   rv   rv   rw   r°   ý  s    z'Process.connections.<locals>.<listcomp>)r
   r¶   r·   r   ro   r¹   r½   rÝ   r   rº   r~   rú   r´   Zproc_connectionsr   )rí   r¼   r¾   r¿   r   rÀ   r€   rÁ   rÂ   rÃ   rÄ   rÅ   r4   r½   rÆ   rv   rv   rw   r³   ù  s6    

zProcess.connectionsNc             C   s   t  | j|| j¡S )N)r   Zwait_pidr½   rë   )rí   Útimeoutrv   rv   rw   Úwait  s    zProcess.waitc             C   s   t  | j¡S )N)r¡   Úgetpriorityr½   )rí   rv   rv   rw   Únice_get  s    zProcess.nice_getc             C   s   t  | j|¡S )N)r¡   Úsetpriorityr½   )rí   Úvaluerv   rv   rw   Únice_set#  s    zProcess.nice_setc             C   s   |   ¡ td  }t |d¡S )Nr4   ú?)rû   ræ   ÚPROC_STATUSESÚget)rí   Úcoderv   rv   rw   r4   '  s    zProcess.statusc             C   s(   |   ¡ }t |td  |td  dd¡S )Nr?   r@   r…   )rû   r   Úpioræ   )rí   r
  rv   rv   rw   Úio_counters-  s    

zProcess.io_countersc             C   s>   t r| jdkrdS tstr*t | j¡p(dS ttr4dndƒ‚dS )z)Return process current working directory.r   Nz&supported only starting from FreeBSD 8r   )r   r½   r   ÚHAS_PROC_OPEN_FILESro   Zproc_cwdrƒ   r   )rí   rv   rv   rw   Úcwd6  s    zProcess.cwdZmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countc             C   s   t ‚d S )N)rƒ   )rí   rv   rv   rw   Ú_not_implementedK  s    zProcess._not_implementedc             C   s   t  | j¡}dd„ |D ƒS )z8Return files opened by process as a list of namedtuples.c             S   s   g | ]\}}t  ||¡‘qS rv   )r   Ú	popenfile)r®   ÚpathrÁ   rv   rv   rw   r°   U  s    z&Process.open_files.<locals>.<listcomp>)ro   r   r½   )rí   rÀ   rv   rv   rw   Ú
open_filesQ  s    zProcess.open_filesc             C   s   t  | j¡}tr|  ¡  |S )z=Return the number of file descriptors opened by this process.)ro   r   r½   r   rú   )rí   r   rv   rv   rw   Únum_fds\  s    zProcess.num_fdsc             C   s   t  | j¡S )N)ro   Zproc_cpu_affinity_getr½   )rí   rv   rv   rw   Úcpu_affinity_getj  s    zProcess.cpu_affinity_getc          
   C   s¬   t tttƒ ƒƒƒ}x$|D ]}||krtd||f ƒ‚qW yt | j|¡ W n\ tk
r¦ } z>|j	t	j
t	jfkr”x$|D ]}||krttd||f ƒ‚qtW ‚ W d d }~X Y nX d S )Nz#invalid CPU #%i (choose between %s))ÚtuplerÎ   rˆ   r   r¶   ro   Zproc_cpu_affinity_setr½   r¢   r£   r  ZEDEADLK)rí   ZcpusZallcpusrÑ   r«   rv   rv   rw   Úcpu_affinity_setn  s    

zProcess.cpu_affinity_setc             C   s   t  | j¡S )N)ro   Zproc_memory_mapsr½   )rí   rv   rv   rw   Úmemory_maps‡  s    zProcess.memory_mapsc             C   sP   |d krt  | j|¡S t|ƒdkr2tdt|ƒ ƒ‚|\}}t  | j|||¡S d S )Nr   z4second argument must be a (soft, hard) tuple, got %s)ro   Zproc_getrlimitr½   rˆ   r¶   r­   Zproc_setrlimit)rí   ÚresourceZlimitsZsoftÚhardrv   rv   rw   Úrlimit‹  s    zProcess.rlimit)r  )N)N)0Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rø   rú   rô   r   rû   rý   rÿ   rK   r  r  r  r  r3   r  r  r}   r   r  r  Zmemory_full_infor<   r  r  r  r³   r  r  r  r4   r$  r&  r   Znt_mmap_groupedZnt_mmap_extr'  r%  r*  ÚHAS_PROC_NUM_FDSr+  r,  r.  r/  r2  rv   rv   rv   rw   r²   I  sf   		
!	r²   )F)~r6  Ú
contextlibr£   rò   r  Zxml.etree.ElementTreeÚetreeZElementTreer‡   Úcollectionsr   r   r   r   r   r   ro   r   r¡   r	   r
   r   r   r   r   r   r   r   r   r   Ú_compatr   r   r   r   Z__extra__all__ZSIDLÚSTATUS_IDLEZSRUNÚSTATUS_RUNNINGZSSLEEPÚSTATUS_SLEEPINGZSSTOPÚSTATUS_STOPPEDrç   ÚSTATUS_ZOMBIEZSWAITÚSTATUS_WAITINGZSLOCKÚSTATUS_LOCKEDr   ZSDEADÚSTATUS_WAKINGZSONPROCZTCPS_ESTABLISHEDÚCONN_ESTABLISHEDZTCPS_SYN_SENTÚCONN_SYN_SENTZTCPS_SYN_RECEIVEDÚCONN_SYN_RECVZTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ZTCPS_TIME_WAITÚCONN_TIME_WAITZTCPS_CLOSEDÚ
CONN_CLOSEZTCPS_CLOSE_WAITÚCONN_CLOSE_WAITZTCPS_LAST_ACKÚCONN_LAST_ACKZTCPS_LISTENÚCONN_LISTENZTCPS_CLOSINGÚCONN_CLOSINGZPSUTIL_CONN_NONEÚ	CONN_NONErº   ZgetpagesizeZPAGESIZEZAF_LINKr¤   ZHAS_PER_CPU_TIMESr  r%  r8  Údictræ   rL   rW   r]   Zpfullmemra   rd   re   rf   rx   r|   r}   r   r‚   r   r„   rŽ   r‘   Ú
disk_usageZdisk_io_countersrŸ   Znet_if_addrsr¬   r¹   rÈ   rÔ   rÙ   rÚ   rÜ   rá   r±   rã   rê   rô   Úcontextmanagerrö   Úobjectr²   rv   rv   rv   rw   Ú<module>   s(  







	
#
(


