B
    "„Oc°z  ã               @   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„ Zherädldm„ Zineròdndm„ Zid‹dodp„ZjejkZkejlZlejmZmejnZndqdr„ Zodsdt„ Zper:dudv„ Zqdwdx„ Zrdydz„ Zsd{d|„ Zted}d~„ ƒZudd€„ Zvesjertdd‚„ 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)Údefaultdict)Ú
namedtupleé   )Ú_common)Ú_psposix)Ú_psutil_bsd)Ú_psutil_posix)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Ú	conn_tmap)Úconn_to_ntuple)Úmemoize)Úmemoize_when_activated)Úusage_percent)Ú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ÚsdiskioZ
read_countZwrite_countZ
read_bytesZwrite_bytesZ	read_timeZ
write_timeZ	busy_timec              C   sè   t  ¡ } | \}}}}}}}}tr¢tddƒr}	xj|	D ]b}
|
 d¡rVt|
 ¡ d ƒd }q2|
 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:s   Cached:N)Úround_)	ÚcextZvirtual_memr
   ÚopenÚ
startswithÚintÚsplitr   rL   )ZmemrM   rP   rQ   rR   rV   rT   rS   rU   ÚfÚlineZavailrO   rN   © rp   ú,lib/python3.7/site-packages/psutil/_psbsd.pyÚvirtual_memory³   s     



"rr   c              C   s4   t  ¡ \} }}}}t|| dd}t | |||||¡S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   )rh   )ri   Zswap_memr   r   Zsswap)rM   rO   rP   ZsinZsoutrN   rp   rp   rq   Úswap_memoryÉ   s    rs   c              C   s"   t  ¡ \} }}}}t| ||||ƒS )z+Return system per-CPU times as a namedtuple)ri   Ú	cpu_timesrW   )rX   rY   rZ   r[   r\   rp   rp   rq   rt   Õ   s    rt   c              C   sB   g } x8t  ¡ D ],}|\}}}}}t|||||ƒ}|  |¡ qW | S )z'Return system CPU times as a namedtuple)ri   r   rW   Úappend)ÚretZcpu_trX   rY   rZ   r[   r\   Úitemrp   rp   rq   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_logicalrt   r   Ú
__called__ÚNotImplementedErrorrp   rp   rp   rq   r   ì   s    
Fc               C   s   t  ¡ S )z0Return the number of logical CPUs in the system.)ri   rx   rp   rp   rp   rq   rx   ø   s    rx   c               C   s   t ƒ dkrdS d S )Nr   )rx   rp   rp   rp   rq   Úcpu_count_coresþ   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 )z-Return the number of CPU cores in the system.Nz	</groups>éÿÿÿÿr#   zgroup/children/group/cpur   )	ri   Zcpu_topologyÚrfindÚETZ
fromstringÚlenÚfindallÚclearrx   )rv   ÚsÚindexÚrootrp   rp   rq   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/statrg   s   intrr   N)r	   ri   Ú	cpu_statsr
   rj   rk   rl   rm   r   r   Z	scpustats)	ZctxswZintrsZ
soft_intrsZsyscallsZtrapsZfaultsZforksrn   ro   rp   rp   rq   r…     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)rx   Úrangeri   Úcpu_freqrz   rl   rm   Ú
IndexErrorÚ
ValueErrorru   r   Úscpufreq)rv   Únum_cpusÚcpuÚcurrentZavailable_freqZmin_freqZmax_freqrp   rp   rq   r‰   <  s$     
 
r‰   c              C   s   t t ¡ ƒ} t | dd¡gS )Ng        )Úfloatri   r‰   r   rŒ   )Zcurrrp   rp   rq   r‰   T  s    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)ri   Údisk_partitionsr   Z	sdiskpartru   )ÚallÚretlistZ
partitionsÚ	partitionZdeviceZ
mountpointZfstypeZoptsZmaxfileZmaxpathÚntuplerp   rp   rq   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
 |¡}d |¡}d|k}	t
 |	||||¡||< qW |S )z)Get NIC stats (isup, duplex, speed, mtu).NÚ	NicDuplexú,Zrunning)Únet_io_countersÚkeysÚ
cext_posixZ
net_if_mtuZnet_if_flagsZnet_if_duplex_speedÚOSErrorÚerrnoZENODEVÚhasattrr   r–   ÚjoinZ	snicstats)
Únamesrv   rK   ZmtuÚflagsZduplexZspeedÚerrZoutput_flagsZisuprp   rp   rq   Ú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 rp   )Úrepr)Ú.0Úxrp   rp   rq   ú
<listcomp>¤  s    z#net_connections.<locals>.<listcomp>r|   )r   ÚpidsÚProcessÚconnectionsr   r   Úlistru   r   Zsconnr   r‹   rž   Úsetr
   ri   Únet_connectionsr   ÚTCP_STATUSESÚadd)Úkindrv   ÚpidZconsZconnÚfamiliesÚtypesÚrawlistrw   ÚfdÚfamÚtypeÚladdrÚraddrr4   Úntrp   rp   rq   r¬   ’  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|   é<   )ri   Úsensors_batteryrz   r   ZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)rN   ZminsleftZpower_pluggedZsecsleftrp   rp   rq   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ª   rx   rˆ   ri   Zsensors_cpu_temperatureru   r   Zshwtemprz   )rv   r   rŽ   r   ZhighrK   rp   rp   rq   Úsensors_temperaturesÌ  s    
r¼   c               C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)ri   Ú	boot_timerp   rp   rp   rq   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ú~)ri   Úusersr   ÚAssertionErrorr   Zsuserru   )	r“   r³   rw   rX   ZttyZhostnameZtstampr°   r¹   rp   rp   rq   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   rp   rp   rp   rq   Ú_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   )ri   r§   r   rÁ   Úinsert)rv   rp   rp   rq   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°   Úexistsrp   rp   rq   rÃ     s    

rÃ   c             C   s6   yt  | ¡td  }|t jkS  tk
r0   dS X d S )Nr4   F)ri   Úproc_oneshot_infoÚkinfo_proc_mapÚSZOMBÚ	Exception)r°   Ústrp   rp   rq   Ú	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)Úfunrp   rq   Úwrapper-  s    


z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rÐ   rÑ   rp   )rÐ   rq   Ú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   )Úinstrp   rp   rq   Úwrap_exceptions_procfsB  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°   rp   rp   rq   Ú__init__X  s    zProcess.__init__c             C   s   t  | j¡ dS )z+Raise NSP if the process disappeared on us.N)ri   Ú	proc_namer°   )rÍ   rp   rp   rq   Ú_assert_alive]  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.)ri   rÅ   r°   r   rÆ   rÀ   )rÍ   rv   rp   rp   rq   Úoneshotc  s    zProcess.oneshotc             C   s   | j  | ¡ d S )N)rÛ   Zcache_activate)rÍ   rp   rp   rq   Úoneshot_enterk  s    zProcess.oneshot_enterc             C   s   | j  | ¡ d S )N)rÛ   Zcache_deactivate)rÍ   rp   rp   rq   Úoneshot_exitn  s    zProcess.oneshot_exitc             C   s(   |   ¡ td  }|d k	r|S t | j¡S )NrK   )rÛ   rÆ   ri   rÙ   r°   )rÍ   rK   rp   rp   rq   rK   q  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°   ri   Zproc_exer
   rÖ   ÚosÚreadlinkÚcmdliner   )rÍ   rá   rp   rp   rq   Úexev  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
   ri   Zproc_cmdliner›   rœ   ÚEINVALrÊ   r   rË   rÌ   rÃ   r   )rÍ   r¡   rp   rp   rq   rá   Ž  s    

zProcess.cmdlinec             C   s   t  | j¡S )N)ri   Zproc_environr°   )rÍ   rp   rp   rq   Ú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tmaprp   rp   rq   Úterminal¬  s    zProcess.terminalc             C   s   |   ¡ td  | _| jS )Nr3   )rÛ   rÆ   rÌ   )rÍ   rp   rp   rq   r3   µ  s    zProcess.ppidc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr5   r6   r7   )rÛ   r   ZpuidsrÆ   )rÍ   Úrawtuplerp   rp   rq   Úuidsº  s
    

zProcess.uidsc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr8   r9   r:   )rÛ   r   ZpgidsrÆ   )rÍ   rç   rp   rp   rq   Ú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ç   rp   rp   rq   rt   Ê  s    


zProcess.cpu_timesc             C   s   |   ¡ td  S )NrJ   )rÛ   rÆ   )rÍ   rp   rp   rq   Ú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ç   rp   rp   rq   Úmemory_infoØ  s    



zProcess.memory_infoc             C   s   |   ¡ td  S )Nr<   )rÛ   rÆ   )rÍ   rp   rp   rq   r<   ä  s    zProcess.create_timec             C   s    t rt | j¡S t|  ¡ ƒS d S )N)ÚHAS_PROC_NUM_THREADSri   r   r°   r   Úthreads)rÍ   rp   rp   rq   Únum_threadsè  s    zProcess.num_threadsc             C   s$   |   ¡ }t |td  |td  ¡S )Nr=   r>   )rÛ   r   ZpctxswrÆ   )rÍ   rç   rp   rp   rq   Únum_ctx_switchesð  s    
zProcess.num_ctx_switchesc             C   sL   t  | j¡}g }x*|D ]"\}}}t |||¡}| |¡ qW trH|  ¡  |S )N)ri   Zproc_threadsr°   r   Zpthreadru   r   rÚ   )rÍ   r³   r“   Z	thread_idÚutimeZstimer•   rp   rp   rq   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 rp   )r£   )r¤   r¥   rp   rp   rq   r¦     s    z'Process.connections.<locals>.<listcomp>)r   r‹   rž   r
   ri   r¬   r°   rÀ   r   r­   ru   rÚ   rª   Zproc_connectionsr   )rÍ   r¯   r±   r²   rv   r³   rw   r´   rµ   r¶   r·   r¸   r4   r°   r¹   rp   rp   rq   r©     s6    

zProcess.connectionsNc             C   s   t  | j|| j¡S )N)r   Zwait_pidr°   rË   )rÍ   Ztimeoutrp   rp   rq   Úwait%  s    zProcess.waitc             C   s   t  | j¡S )N)rš   Úgetpriorityr°   )rÍ   rp   rp   rq   Únice_get)  s    zProcess.nice_getc             C   s   t  | j|¡S )N)rš   Úsetpriorityr°   )rÍ   Úvaluerp   rp   rq   Únice_set-  s    zProcess.nice_setc             C   s   |   ¡ td  }t |d¡S )Nr4   ú?)rÛ   rÆ   ÚPROC_STATUSESÚget)rÍ   Úcoderp   rp   rq   r4   1  s    zProcess.statusc             C   s(   |   ¡ }t |td  |td  dd¡S )Nr?   r@   r|   )rÛ   r   ZpiorÆ   )rÍ   rç   rp   rp   rq   Úio_counters7  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_FILESri   Zproc_cwdrz   r	   )rÍ   rp   rp   rq   Úcwd@  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)rz   )rÍ   rp   rp   rq   Ú_not_implementedU  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 rp   )r   Z	popenfile)r¤   Úpathr´   rp   rp   rq   r¦   _  s    z&Process.open_files.<locals>.<listcomp>)ri   r   r°   )rÍ   r³   rp   rp   rq   Ú
open_files[  s    zProcess.open_filesc             C   s   t  | j¡}tr|  ¡  |S )z=Return the number of file descriptors opened by this process.)ri   r   r°   r
   rÚ   )rÍ   rv   rp   rp   rq   Únum_fdsf  s    zProcess.num_fdsc             C   s   t  | j¡S )N)ri   Zproc_cpu_affinity_getr°   )rÍ   rp   rp   rq   Úcpu_affinity_gett  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‹   ri   Zproc_cpu_affinity_setr°   r›   rœ   rã   ZEDEADLK)rÍ   ZcpusZallcpusrŽ   r¡   rp   rp   rq   Úcpu_affinity_setx  s    

zProcess.cpu_affinity_setc             C   s   t  | j¡S )N)ri   Zproc_memory_mapsr°   )rÍ   rp   rp   rq   Ú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)ri   Zproc_getrlimitr°   r   r‹   r£   Zproc_setrlimit)rÍ   ÚresourceZlimitsZsoftZhardrp   rp   rq   Ú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é   rt   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  r  rp   rp   rp   rq   r¨   S  sf   		
!	r¨   )F)~r  Ú
contextlibrœ   rÒ   rß   Zxml.etree.ElementTreeZetreeZElementTreer~   Úcollectionsr   r   rÞ   r   r   r   ri   r   rš   r	   r
   r   r   r   r   r   r   r   r   r   Z_compatr   r   r   r   Z__extra__all__ZSIDLZSTATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDrÇ   ZSTATUS_ZOMBIEZSWAITZSTATUS_WAITINGZSLOCKZSTATUS_LOCKEDrù   ZSDEADZSTATUS_WAKINGZSONPROCZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZTCPS_SYN_SENTZCONN_SYN_SENTZTCPS_SYN_RECEIVEDZCONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZTCPS_LAST_ACKZCONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONEr­   ZgetpagesizeZPAGESIZEZAF_LINKr   ZHAS_PER_CPU_TIMESrì   rý   r  ÚdictrÆ   rL   rW   r]   Zpfullmemra   rd   re   rf   rr   rs   rt   r   ry   rx   r{   r…   r‰   r‘   Z
disk_usageZdisk_io_countersr˜   Znet_if_addrsr¢   r¬   r»   r¼   r½   r¿   rÁ   r§   rÃ   rÊ   rÔ   ÚcontextmanagerrÖ   Úobjectr¨   rp   rp   rp   rq   Ú<module>   s.  







	



(


