iudZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z dd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZgZerWeje jej e j!ej"e j#ej$e j%ej&e j'ej(e j)ej*e j+iZ,nerWeje jej"e j#ej$e j%ej-e j'ej&e j'ej e j.ej/e j!iZ,nLerJeje jej"e j#ej$e j%ej&e j'ej e j.ej/e j!iZ,ej0e j1ej2e j3ej4e j5ej6e j7ej8e j9ej:e j;ej<e j=ej>e j?ej@e jAejBe jCejDe jEejFe jGi ZHejIZJejKZKeLedZMeNdeiddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGZOdHZPdIZQeLedJrejRZRejSZSdKZTdLZUdMZVeserdNZWndOZWdPZXerdQZYnerdRZYdfdTZZej[Z[ej\Z\ej]Z]ej^Z^dUZ_dVZ`erdWZadXZbdYZcer1 ecZdn"#ee$rZfedZefdZdYdZf[fndZf[fwwxYwd[Zgd\Zhed]Zid^Zjerd_Zkn erd`ZknejkZkdaZlejmdbZnGdcddZodS)gz5FreeBSD, OpenBSD and NetBSD platforms implementation.N) defaultdict) namedtuple) ElementTree)_common)_ntuples)_psposix) _psutil_bsd)FREEBSD)NETBSD)OPENBSD) AccessDenied) NoSuchProcess) ZombieProcess) conn_tmap)conn_to_ntuple)debug)memoize)memoize_when_activated) usage_percentproc_num_threadsppidstatusreal_uid effective_uid saved_uidreal_gid effective_gid saved_gidttynr create_time ctx_switches_vol ctx_switches_unvol read_io_count write_io_count user_timesys_time ch_user_time ch_sys_timerssvmsmemtextmemdatamemstackcpunumnamec Ttj}tr|\}}}}}}tdd5}|D]}|dr+t |ddz} B|dr*t |ddz} dddn #1swxYwY||z} || z } n|\}}}}}}} } ||z|z} ||z|z} t|| z |d} tj || | | |||| || | S)Nz /proc/meminforbsBuffers:ris MemShared:round_) cext virtual_memr open startswithintsplitrntpsvmem)memtotalfreeactiveinactivewiredcachedflinebufferssharedusedavailpercents ;C:\PYTHON\_runtimes\venv\Lib\site-packages\psutil/_psbsd.pyvirtual_memoryrcs    C '7:4tVXuf/4 ( ( 9A 9 9??;//9!$**,,q/22T9GG__]339 a11D8F  9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9~ HKEtVXufgv 6!D(~&UU]U1===G 9        sBCC  C ctj\}}}}}t||d}tj||||||S)z@System swap memory as (total, used, free, sin, sout) namedtuple.rrJ)rLswap_memrrRsswap)rUr_rVsinsoutras rb swap_memoryrisF#'=?? E4sDD%222G 9UD$d ; ;; heap_infocdtj\}}}}}tj|||||S)z,Return system per-CPU times as a namedtuple.)rL cpu_timesrR scputimes)usernicesystemidleirqs rbrmrms2$(N$4$4!D$c =tVT3 7 77rjcg}tjD]7}|\}}}}}tj|||||}||8|S)z(Return system CPU times as a namedtuple.)rL per_cpu_timesrRrnappend)retcpu_trorprqrrrsitems rbrurus` C#%%(-%dFD#}T4s;; 4 Jrjc(tjS)z0Return the number of logical CPUs in the system.)rLcpu_count_logicalrjrbr{r{s  ! # ##rjc.tdkrdndS)Nr)r{r|rjrbcpu_count_coresr~s%''1,,qq$6rjc~d}tj}||d}|dkrt|d|dz}tj|} t |dpd}|n#|wxYw|stdkrdS|S)z-Return the number of CPU cores in the system.Nz r)zgroup/children/group/cpur) rL cpu_topologyrfindr fromstringlenfindallclearr{)rwsindexroots rbr~r~s     =GGK((E{{k kN"-a00!dll+EFFGGO4CJJLLLLDJJLLLL  ""a''q s $BB$ctrtj\}}}}}ntrtj\}}}}}}}t dd5}|D]>}|dr't |d}? dddn #1swxYwYn"trtj\}}}}}}}tj ||||S)z*Return various CPU stats as a named tuple.z /proc/statrIsintrrN) r rL cpu_statsr rNrOrPrQr rR scpustats) ctxswintrs soft_intrssyscalls_traps_faults_forksr[r\s rbrrs9 6:^5E5E2uj(FF   N   Duj(FGV, % % 1 1 1??7++1 Q00E 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   N   Duj(FGV =z8 < <#7#7#<##7#7#<#  rjzignoring exception on import: ctdkr|Sttz }|dkst|dkr|Std|dkr||z S||zS)z!Account for system clock updates.rrz9system clock was updated; adjusting process create_time())INIT_BOOT_TIMErabsr)ctimediffs rbadjust_proc_create_timersh Q  L + 199D A L IJJJ !884< t|rjcg}tj}|D]@}|\}}}}}|dkrtj||pd|||}||A|S)z:Return currently connected users as a list of namedtuples.~N)rLusersrRsuserrv) rrryrottyhostnametstamprrs rbrrsrGjllG+/(c8VS #::  YtS[D(FC @ @r Nrjc tddS#t$rYdSt$rYdSwxYw)NrTF)ProcessrFrrr|rjrb _pid_0_existsrsa  t uu tts!% ? ??ctj}tr(d|vr$tr|dd|S)z7Returns a list of PIDs currently running on the system.r)rLpidsr rinsert)rws rbrrs@ )++CASLLmooL 1a JrjcRtj|}|s|tvSdS)NTr pid_existsrrexistss rbrrs/$S)) $&&= 4rjcRtj|}|sdS|tvS)NFrrs rbrr s/$S)) !5 $&&= rjcFtjfd}|S)z`Decorator which translates bare OSError exceptions into NoSuchProcess and AccessDenied. c|j|j|j}}} |g|Ri|S#t$r<}t j|rt ||||t|||d}~wt$r}t|||d}~wtj $r}t ||||d}~wt$r/}|dkr!dtvrt||||dd}~wwxYw)Nr) r_ppid_nameProcessLookupErrorrLproc_is_zombierrPermissionErrorrZombieProcessErrorrr)selfargskwargsrrrFrfuns rbwrapperz wrap_exceptions..wrappers-(DJ 4T 3t-d---f-- -! 4 4 4"3'' >#Ct44#=T** 3 3 3 3sD))s 2& : : :T400c 9   axxAKK"3--364  s8 $ C#7A%% C#2BC#B'' C#4*CC#) functoolswraps)rrs` rbwrap_exceptionsrs: _S     " Nrjc#$K|j|j|j}}} dVdS#ttf$rA}t j|jrt||||t|||d}~wt$r}t|||d}~wwxYw)z8Same as above, for routines relying on reading /proc fs.N) rrrr FileNotFoundErrorrLr rrr r)instrrFrrs rbwrap_exceptions_procfsr3sh DJtC /   1 2444  tx ( ( 4T400c 9T** 3 ///3%%3./s B>y ^J/ 0 ^O4 5 ^K0 1   rjc|}tj|td|td|tdS)Nr r"r$)r&rRpgidsr$rFs rbgidsz Process.gidsrIrjc|}tj|td|td|td|tdS)Nr2r4r6r8)r&rR pcputimesr$rFs rbrmzProcess.cpu_timessW<<>>} ^K0 1 ^J/ 0 ^N3 4 ^M2 3    rjcL|tdS)NrD)r&r$r s rbcpu_numzProcess.cpu_nums<<>>.":; ;rjc |}tj|td|td|td|td|tdS)Nr:r<r>r@rB)r&rRpmemr$rFs rb memory_infozProcess.memory_infosd<<>>x ^E* + ^E* + ^I. / ^I. / ^J/ 0    rjFc|td}tr|st|}|S)Nr()r&r$r r)r  monotonicrs rbr(zProcess.create_times: ~m<=  3) 3+E22E rjctrtj|jSt |Sr)HAS_PROC_NUM_THREADSrLrrrthreadsr s rb num_threadszProcess.num_threadss3  '(22 2t||~~&& &rjc|}tj|td|tdS)Nr*r,)r&rRpctxswr$rFs rbnum_ctx_switcheszProcess.num_ctx_switchess?<<>>z ^$67 8 ^$89 :   rjctj|j}g}|D]1\}}}tj|||}||2t r||Sr)rL proc_threadsrrRpthreadrvr r!)r rr thread_idutimestimers rbrXzProcess.threadssx#DH--'. # # #Iue[E599F NN6 " " " "  !    rjinetc t|\}}g}trtj|j|}n>t rtj|j||}ntj|j||}|D]R}|dd\}}} } } } tr ||vs| |vr#t||| | | | t} | | S| |S)Nr#) rr rLrrr proc_net_connectionsr rrrvr!)r rrrrwrryrrrrrrrs rbrzProcess.net_connectionss#D/%  K*48T::GG  K*48XuEEGG/(EJJG  D26rr( /BT5% x''T->->CueV\B JJrNNNN  rjNc6tj|j|Sr)r wait_pidr)r timeouts rbwaitz Process.waits 7333rjc4tj|jSr)rLproc_priority_getrr s rbnice_getzProcess.nice_gets%dh///rjc6tj|j|Sr)rLproc_priority_setr)r values rbnice_setzProcess.nice_set#s%dh666rjc|td}t|dS)Nr?)r&r$ PROC_STATUSESget)r codes rbrzProcess.status's/||~~nX67  s+++rjc|}tj|td|tdddS)Nr.r0r)r&rRpior$rFs rb io_counterszProcess.io_counters-sD<<>>w ^O4 5 ^$45 6      rjc\tr |jdkrdStj|jS)z)Return process current working directory.rr/)r rrLproc_cwdr s rbcwdz Process.cwd7s-  tx1}}2}TX&&&rjmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countcLtj|j}d|DS)z8Return files opened by process as a list of namedtuples.c>g|]\}}tj||Sr|)rR popenfile).0pathrs rb z&Process.open_files..Ks(@@@HD" dB''@@@rj)rLproc_open_filesr)r rs rb open_fileszProcess.open_filesGs*&tx00@@@@@@rjcntj|j}tr||S)z=Return the number of file descriptors opened by this process.)rL proc_num_fdsrr r!r%s rbnum_fdszProcess.num_fdsMs5))  !     rjc4tj|jSr)rLproc_cpu_affinity_getrr s rbcpu_affinity_getzProcess.cpu_affinity_getYs-dh77 7rjctttt}|D]}||vrd|d|d}t | t j|j|dS#t$rG}|j tj tj hvr"|D]}||vrd|d|d}t || d}~wwxYw)Nz invalid CPU z (choose between )) rrrrurrLproc_cpu_affinity_setrrrr9EDEADLK)r cpusallcpusrmsgrs rbcpu_affinity_setzProcess.cpu_affinity_set]s %MOO 4 45566G * *g%%KKKKKKC$S//)& *48T:::::    9u} ===#;;g--!/s!/!/$+!/!/!/ #-S//s: .  sA44 C>ACCc4tj|jSr)rLproc_memory_mapsrr s rb memory_mapszProcess.memory_mapsxs(22 2rjc|tj|j|St|dkrd|}t ||\}}tj|j|||S)Nrz2second argument must be a (soft, hard) tuple, got )rLproc_getrlimitrrrproc_setrlimit)r resourcelimitsrsofthards rbrlimitzProcess.rlimit|st~*48X>>>v;;!##'"''%S//)# d*48XtTJJJrjF)rcr)-__name__ __module__ __qualname____doc__ __slots__rr!rrr&r)r,rFr6r4r<rBrrHrLrmr rPrSmemory_full_infor(rYr\rXrrirlrprrxr{rnt_mmap_grouped nt_mmap_extrrrrrrr|rjrbrrEs;;333I !!! _ ***,,,FF_F_2//_/4++_+__  _   _   _ <  < <  <  _ #_''_'  _   _ _0444_400_077_7,,_,   _ ''_'!j<O*HKAA_A _1K  8 8  8     4  3 3  3  K K K  K K KM1K1Krjrr|r)pr contextlibrrr1 collectionsrr xml.etreerr/rrrRr r rLr r r rrrrrrrrr__extra__all__SIDL STATUS_IDLESRUNSTATUS_RUNNINGSSLEEPSTATUS_SLEEPINGSSTOPSTATUS_STOPPEDSZOMB STATUS_ZOMBIESWAITSTATUS_WAITINGSLOCK STATUS_LOCKEDrsSDEAD STATUS_WAKINGSONPROCTCPS_ESTABLISHEDCONN_ESTABLISHED TCPS_SYN_SENT CONN_SYN_SENTTCPS_SYN_RECEIVED CONN_SYN_RECVTCPS_FIN_WAIT_1CONN_FIN_WAIT1TCPS_FIN_WAIT_2CONN_FIN_WAIT2TCPS_TIME_WAITCONN_TIME_WAIT TCPS_CLOSED CONN_CLOSETCPS_CLOSE_WAITCONN_CLOSE_WAIT TCPS_LAST_ACK CONN_LAST_ACK TCPS_LISTEN CONN_LISTEN TCPS_CLOSING CONN_CLOSINGPSUTIL_CONN_NONE CONN_NONEr getpagesizePAGESIZEAF_LINKrrWdictr$rcrirk heap_trimrmrur{r~rrr disk_usagedisk_io_countersr net_if_addrsrrrrrr Exceptionrrrrrrrcontextmanagerrrr|rjrbrsk <;  ######""""""!!!!!!!!!!!!!!!!!!""""""""""""######++++++"""""" ( 7& 7) W, G* G) G* G)MM  7& W, G* G) G) 7( g,'MM*  7& W, G* G) 7( g, M 73-G1'0'0/g('1-g)w+7,   4    ,wt%788  1Q!  a  Q !a !Rr"2b R!"#$%& '( )* B+, B-.R/0 212 3D,,,^<<< 74II888 $$$  f 7777 6===@ .0 ....     (& ,2 >>> ,  "  6s66777      $   % %!!!!$J4 ///"CKCKCKCKCKCKCKCKCKCKs L L*L%%L*