
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    Œ=Ý_]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_groupedú*path rss, private, ref_count, shadow_countÚ	pmmap_extú6addr, 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ƒ�N}	|	D ]B}
|
 d¡rTt|
 ¡ d ƒd }q0|
 d¡r0t|
 ¡ d ƒd }q0W 5 Q R X || | }|| | }t|| |dd�}t|||||||||||ƒS )z&System virtual memory as a namedtuple.z/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:©Úround_)	ÚcextZvirtual_memr   ÚopenÚ
startswithÚintÚsplitr   rL   )ZmemrM   rP   rQ   rR   rV   rT   rS   rU   ÚfÚlineZavailrO   rN   © ry   ú@/opt/alt/python38/lib64/python3.8/site-packages/psutil/_psbsd.pyÚvirtual_memory³   s(    

      ÿr{   c                  C   s4   t  ¡ \} }}}}t|| dd�}t | |||||¡S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   rp   )rr   Zswap_memr   r   Ússwap)rM   rO   rP   ÚsinÚsoutrN   ry   ry   rz   Úswap_memoryÇ   s    r   c                  C   s"   t  ¡ \} }}}}t| ||||ƒS )z+Return system per-CPU times as a namedtuple)rr   Ú	cpu_timesrW   )rX   rY   rZ   r[   r\   ry   ry   rz   r€   Ó   s    r€   c                  C   s>   g } t  ¡ D ],}|\}}}}}t|||||ƒ}|  |¡ q| S )ú'Return system CPU times as a namedtuple)rr   r   rW   Úappend)ÚretZcpu_trX   rY   rZ   r[   r\   Úitemry   ry   rz   r   Ú   s    c                   C   s.   t ƒ dkrtƒ gS tjr tdƒ‚dt_tƒ gS )r�   r   ú&supported only starting from FreeBSD 8T)Úcpu_count_logicalr€   r   Ú
__called__ÚNotImplementedErrorry   ry   ry   rz   r   ê   s    
Fc                   C   s   t  ¡ S )z0Return the number of logical CPUs in the system.)rr   r†   ry   ry   ry   rz   r†   ö   s    r†   c                   C   s   t ƒ dkrdS d S )Nr   )r†   ry   ry   ry   rz   Ú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 5 | ¡  X | sttƒ dkrtdS | S )z1Return the number of physical CPUs in the system.Nz	</groups>éÿÿÿÿr#   zgroup/children/group/cpur   )	rr   Zcpu_count_physÚrfindÚETZ
fromstringÚclearÚlenÚfindallr†   )rƒ   ÚsÚindexÚrootry   ry   rz   r‰      s    



c            	   	   C   s˜   t rt ¡ \} }}}}nptrnt ¡ \} }}}}}}tddƒ�*}|D ]}| d¡rBt| ¡ d ƒ}qBW 5 Q R X ntrˆt ¡ \} }}}}}}t	 
| |||¡S )z*Return various CPU stats as a named tuple.z
/proc/statro   s   intrr   )r   rr   Ú	cpu_statsr   rs   rt   ru   rv   r   r   Ú	scpustats)	ZctxswZintrsZ
soft_intrsÚsyscallsZtrapsZfaultsZforksrw   rx   ry   ry   rz   r“     s    ÿ
ÿr“   c              	   C   sL   g }t  ¡ }|D ]6}|\}}}}d }}	t ||||||	¡}
| |
¡ q|S )z”Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906
    N)rr   Údisk_partitionsr   Ú	sdiskpartr‚   )ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚmaxfileÚmaxpathÚntuplery   ry   rz   r–   ?  s     ÿr–   c                  C   sœ   t ƒ  ¡ } i }| D ]„}z&t |¡}t |¡}t |¡\}}W n0 tk
rl } z|jtjkr\‚ W 5 d}~X Y qX t	t
dƒr‚t
 |¡}t
 ||||¡||< q|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Úerrry   ry   rz   Únet_if_stats\  s    




r±   c              
   C   s  t rtg }tƒ D ]`}zt|ƒ | ¡}W n ttfk
r@   Y qY qX |D ]&}t|ƒ}| |¡ | tj	|Ž ¡ qFq|S | tj
kržtd| d dd„ t
D ƒ¡f ƒ‚t
|  \}}tƒ }trÀt d¡}nt ¡ }|D ]F}|\}	}
}}}}}|
|krÌ||krÌt|	|
||||t|ƒ}| |¡ qÌt|ƒS )z System-wide network connections.ú+invalid %r kind argument; choose between %sú, c                 S   s   g | ]}t |ƒ‘qS ry   ©Úrepr©Ú.0Úxry   ry   rz   Ú
<listcomp>‚  s     z#net_connections.<locals>.<listcomp>rŠ   )r   ÚpidsÚProcessÚconnectionsr   r   Úlistr‚   r   Úsconnr
   Ú
ValueErrorÚjoinÚsetr   rr   Únet_connectionsr   ÚTCP_STATUSESÚadd)Úkindrƒ   ÚpidZconsZconnÚfamiliesÚtypesÚrawlistr„   ÚfdÚfamÚtypeÚladdrÚraddrr4   Úntry   ry   rz   rÂ   p  s<    



ÿ ÿrÂ   c                  C   sd   zt  ¡ \} }}W n tk
r(   Y dS X |dk}|r>tj}n|dkrNtj}n|d }t | ||¡S )zReturn battery info.Nr   rŠ   é<   )rr   Úsensors_batteryrˆ   r   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNÚsbattery)rN   ZminsleftÚpower_pluggedÚsecsleftry   ry   rz   rÑ   š  s    rÑ   c               	   C   sv   t tƒ} tƒ }t|ƒD ]Z}z@t |¡\}}|dkr6d}d| }| d  t ||||¡¡ W q t	k
rn   Y qX q| S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore %sZcoretemp)
r   r½   r†   Úrangerr   Zsensors_cpu_temperaturer‚   r   Úshwtemprˆ   )rƒ   Únum_cpusÚcpuÚcurrentÚhighrK   ry   ry   rz   Úsensors_temperaturesª  s    ÿrÝ   c               
   C   sÜ   g } t ƒ }t|ƒD ]Ä}zt |¡\}}W n tk
r@   Y qY nX |rÂz t| d¡d  d¡d ƒ}W n ttfk
r‚   d}Y nX z t| d¡d  d¡d ƒ}W n ttfk
rÀ   d}Y nX |  	t
 |||¡¡ q| 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×   rr   Zcpu_frequencyrˆ   ru   rv   Ú
IndexErrorr¿   r‚   r   Úscpufreq)rƒ   rÙ   rÚ   rÛ   Zavailable_freqZmin_freqZmax_freqry   ry   rz   Úcpu_freq»  s$    
 
 
râ   c                   C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)rr   Ú	boot_timery   ry   ry   rz   rã   Ù  s    rã   c            	      C   sf   g } t  ¡ }|D ]P}|\}}}}}|dkr6ts2t‚d}|dkr@qt ||pLd|||¡}|  |¡ q| S )z:Return currently connected users as a list of namedtuples.rŠ   Nú~)rr   Úusersr   ÚAssertionErrorr   Úsuserr‚   )	r™   rÉ   r„   rX   ÚttyÚhostnameZtstamprÆ   rÏ   ry   ry   rz   rå   Þ  s    rå   c                   C   sD   zt dƒ ¡  W n* tk
r&   Y dS  tk
r:   Y dS X dS d S )Nr   FT)r»   rK   r   r	   ry   ry   ry   rz   Ú_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   )rr   rº   r   rê   Úinsert)rƒ   ry   ry   rz   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Æ   Úexistsry   ry   rz   rì   
  s    

rì   c                 C   s:   zt  | ¡td  }|t jkW S  tk
r4   Y dS X d S )Nr4   F)rr   Úproc_oneshot_infoÚkinfo_proc_mapÚSZOMBÚ	Exception)rÆ   Ústry   ry   rz   Ú	is_zombie  s
    ró   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                    s²   zˆ | f|ž|ŽW S  t k
rR   t| jƒr@t| j| j| jƒ‚nt| j| jƒ‚Y n\ tk
rr   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©Úfunry   rz   Úwrapper#  s    


z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rû   rü   ry   rú   rz   Úwrap_exceptions  s    rÿ   c              	   c   st   z
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	   )Úinstry   ry   rz   Ú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Æ   ry   ry   rz   Ú__init__N  s    zProcess.__init__c                 C   s   t  | j¡ dS )z+Raise NSP if the process disappeared on us.N)rr   Ú	proc_namerÆ   ©r÷   ry   ry   rz   Ú_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.)rr   rî   rÆ   rŽ   rï   ræ   ©r÷   rƒ   ry   ry   rz   ÚoneshotY  s    zProcess.oneshotc                 C   s   | j  | ¡ d S r  )r	  Úcache_activater  ry   ry   rz   Úoneshot_entera  s    zProcess.oneshot_enterc                 C   s   | j  | ¡ d S r  )r	  Úcache_deactivater  ry   ry   rz   Úoneshot_exitd  s    zProcess.oneshot_exitc                 C   s(   |   ¡ td  }|d k	r|S t | j¡S )NrK   )r	  rï   rr   r  rÆ   )r÷   rK   ry   ry   rz   rK   g  s    zProcess.namec              
   C   s‚   t r| jdkrdS t | j¡S tr^| jdkr0dS t| ƒ� t d| j ¡W  5 Q R £ S Q R X n |  ¡ }|rzt	|d ƒpxdS dS d S )Nr   Ú z/proc/%s/exe)
r   rÆ   rr   Zproc_exer   r  ÚosÚreadlinkÚcmdliner   )r÷   r  ry   ry   rz   Úexel  s    


$zProcess.exec              
   C   s²   t r| jdkrg S tr¢zt | j¡W S  tk
rž } z\|jtjkrŒt| jƒr`t	| j| j
| jƒ‚qŽt| jƒs~t| j| j
| jƒ‚qŽg  W Y ¢
S n‚ W 5 d }~X Y q®X nt | j¡S d S rô   )r   rÆ   r   rr   Zproc_cmdliner§   r¨   ÚEINVALró   r   rõ   rö   rì   r   )r÷   r°   ry   ry   rz   r  „  s    

zProcess.cmdlinec                 C   s   t  | j¡S r  )rr   Zproc_environrÆ   r  ry   ry   rz   Úenvironž  s    zProcess.environc                 C   s>   |   ¡ td  }t ¡ }z
|| W S  tk
r8   Y d S X d S )Nr;   )r	  rï   r   Zget_terminal_mapÚKeyError)r÷   Ztty_nrZtmapry   ry   rz   Úterminal¢  s    
zProcess.terminalc                 C   s   |   ¡ td  | _| jS )Nr3   )r	  rï   rö   r  ry   ry   rz   r3   «  s    zProcess.ppidc                 C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr5   r6   r7   )r	  r   Úpuidsrï   ©r÷   Zrawtuplery   ry   rz   Úuids°  s    


ýzProcess.uidsc                 C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr8   r9   r:   )r	  r   Úpgidsrï   r  ry   ry   rz   Ú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  ry   ry   rz   r€   À  s    



üzProcess.cpu_timesc                 C   s   |   ¡ td  S )NrJ   ©r	  rï   r  ry   ry   rz   Ú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  ry   ry   rz   Úmemory_infoÎ  s    




ûzProcess.memory_infoc                 C   s   |   ¡ td  S )Nr<   r  r  ry   ry   rz   r<   Ú  s    zProcess.create_timec                 C   s    t rt | j¡S t|  ¡ ƒS d S r  )ÚHAS_PROC_NUM_THREADSrr   r   rÆ   rŽ   Úthreadsr  ry   ry   rz   Únum_threadsÞ  s    zProcess.num_threadsc                 C   s$   |   ¡ }t |td  |td  ¡S )Nr=   r>   )r	  r   Úpctxswrï   r  ry   ry   rz   Únum_ctx_switchesæ  s
    

þzProcess.num_ctx_switchesc                 C   sH   t  | j¡}g }|D ]"\}}}t |||¡}| |¡ qtrD|  ¡  |S r  )rr   Zproc_threadsrÆ   r   Úpthreadr‚   r   r  )r÷   rÉ   r™   Z	thread_idÚutimeZstimer¢   ry   ry   rz   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¡}|D ]R}|\}}}	}
}}}|| jkspt‚||krL|	|krLt|||	|
||t	ƒ}| 
|¡ qL|  ¡  t|ƒS t | \}}t | j||¡}g }|D ]2}|\}}}	}
}}t|||	|
||t	ƒ}| 
|¡ qÔt�r|  ¡  |S )Nr²   r³   c                 S   s   g | ]}t |ƒ‘qS ry   r´   r¶   ry   ry   rz   r¹   ý  s     z'Process.connections.<locals>.<listcomp>)r
   r¿   rÀ   r   rr   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Ï   ry   ry   rz   r¼   ù  s<    ÿÿÿzProcess.connectionsNc                 C   s   t  | j|| j¡S r  )r   Zwait_pidrÆ   rõ   )r÷   Útimeoutry   ry   rz   Úwait  s    zProcess.waitc                 C   s   t  | j¡S r  )r¦   ÚgetpriorityrÆ   r  ry   ry   rz   Únice_get  s    zProcess.nice_getc                 C   s   t  | j|¡S r  )r¦   ÚsetpriorityrÆ   )r÷   Úvaluery   ry   rz   Únice_set#  s    zProcess.nice_setc                 C   s   |   ¡ td  }t |d¡S )Nr4   ú?)r	  rï   ÚPROC_STATUSESÚget)r÷   Úcodery   ry   rz   r4   '  s    zProcess.statusc                 C   s(   |   ¡ }t |td  |td  dd¡S )Nr?   r@   rŠ   )r	  r   Úpiorï   r  ry   ry   rz   Ú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   Nr…   r  )r   rÆ   r   ÚHAS_PROC_OPEN_FILESrr   Zproc_cwdrˆ   r   r  ry   ry   rz   Úcwd6  s    ÿþzProcess.cwdZmmapre   rg   c                 C   s   t ‚d S r  )rˆ   r  ry   ry   rz   Ú_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 ry   )r   Ú	popenfile)r·   ÚpathrÊ   ry   ry   rz   r¹   U  s     z&Process.open_files.<locals>.<listcomp>)rr   r   rÆ   )r÷   rÉ   ry   ry   rz   Ú
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.)rr   r   rÆ   r   r  r  ry   ry   rz   Únum_fds\  s    zProcess.num_fdsc                 C   s   t  | j¡S r  )rr   Zproc_cpu_affinity_getrÆ   r  ry   ry   rz   Úcpu_affinity_getj  s    zProcess.cpu_affinity_getc              
   C   s¤   t tttƒ ƒƒƒ}|D ]}||krtd||f ƒ‚qzt | j|¡ W nX tk
rž } z:|j	t	j
t	jfkrŒ|D ]}||krntd||f ƒ‚qn‚ W 5 d }~X Y nX d S )Nz#invalid CPU #%i (choose between %s))Útupler×   rŽ   r   r¿   rr   Zproc_cpu_affinity_setrÆ   r§   r¨   r  ZEDEADLK)r÷   ZcpusZallcpusrÚ   r°   ry   ry   rz   Úcpu_affinity_setn  s&    ÿ ÿÿzProcess.cpu_affinity_setc                 C   s   t  | j¡S r  )rr   Zproc_memory_mapsrÆ   r  ry   ry   rz   Ú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)rr   Zproc_getrlimitrÆ   rŽ   r¿   rµ   Zproc_setrlimit)r÷   ÚresourceZlimitsZsoftÚhardry   ry   rz   Ú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   r3  r5  r   Znt_mmap_groupedZnt_mmap_extr6  r4  r9  ÚHAS_PROC_NUM_FDSr:  r;  r=  r>  rA  ry   ry   ry   rz   r»   I  s¢   










	



!




 ÿ ÿ


r»   )F)~rE  Ú
contextlibr¨   rý   r  Zxml.etree.ElementTreeÚetreeZElementTreerŒ   Úcollectionsr   r   r  r   r   r   rr   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  r4  rG  Údictrï   rL   rW   r]   Zpfullmemra   rd   rf   rh   r{   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»   ry   ry   ry   rz   Ú<module>   sž         ù	       í      ú
            ô



ç# 
     ÿÿ ÿ
ÿ ÿ ÿ  ý ÿ	
	
#
(




