1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        ?Python 常用庫之 psutil 使用指南

        共 19987字,需瀏覽 40分鐘

         ·

        2021-01-19 06:49

        ?△點(diǎn)擊上方Python貓”關(guān)注 ,回復(fù)“1”領(lǐng)取電子書

        劇照:約定的夢幻島(第二季)

        作者:古明地盆

        來源:www.cnblogs.com/traditional/p/12580638.html

        楔子

        Python 有一個(gè)第三方模塊:psutil,專門用來獲取操作系統(tǒng)以及硬件相關(guān)的信息,比如:CPU、磁盤、網(wǎng)絡(luò)、內(nèi)存等等。

        首先我們要安裝,直接 pip install psutil 即可,安裝之后來看看它的用法。

        CPU 相關(guān)

        獲取 CPU 的邏輯數(shù)量

        import?psutil

        print(psutil.cpu_count())??#?12

        獲取 CPU 的物理核心數(shù)量

        import?psutil

        print(psutil.cpu_count(logical=False))??#?6

        結(jié)果為 6,說明是 6 核超線程;如果 CPU 的物理核心數(shù) 和 邏輯數(shù)相等,也為 12,則說明是 12 核非超線程。

        統(tǒng)計(jì) CPU 的用戶/系統(tǒng)/空閑時(shí)間

        import?psutil

        print(psutil.cpu_times())?
        #?scputimes(user=65531.796875,?system=42440.76562500023,?idle=1783904.3593749998,?interrupt=5676.375,?dpc=1846.609375)

        #?psutil.cpu_times_percent()?功能與之類似,?只不過返回的比例

        返回的是一個(gè) namedtuple,后面凡是結(jié)構(gòu)長的和這里類似的,都是 namedtuple。

        查看 CPU 的使用率

        import?psutil

        for?x?in?range(3):
        ????# interval:表示每隔0.5s刷新一次
        ????# percpu:表示查看所有的cpu使用率
        ????print(psutil.cpu_percent(interval=0.5,?percpu=True))
        """
        [6.1,?6.2,?9.4,?3.1,?0.0,?0.0,?0.0,?6.2,?3.1,?3.1,?3.1,?0.0]
        [0.0,?0.0,?6.1,?0.0,?6.1,?3.0,?0.0,?3.0,?3.0,?3.0,?0.0,?9.1]
        [0.0,?0.0,?6.2,?3.1,?3.1,?0.0,?3.1,?3.1,?3.1,?3.1,?0.0,?0.0]
        """

        #?我這里cpu的邏輯數(shù)量是12,?所以每個(gè)列表里面有12個(gè)元素

        查看 CPU 的統(tǒng)計(jì)信息,包括上下文切換、中斷、軟中斷,以及系統(tǒng)調(diào)用次數(shù)等等

        import?psutil

        print(psutil.cpu_stats())
        #?scpustats(ctx_switches=2912990332,?interrupts=4290503758,?soft_interrupts=0,?syscalls=2698751096)

        查看 CPU 的頻率

        import?psutil

        print(psutil.cpu_freq())??#?scpufreq(current=2208.0,?min=0.0,?max=2208.0)

        內(nèi)存相關(guān)

        查看內(nèi)存使用情況

        import?psutil

        print(psutil.virtual_memory())??
        #?svmem(total=17029259264,?available=8437215232,?percent=50.5,?used=8592044032,?free=8437215232)
        • total: 總內(nèi)存

        • available: 可用內(nèi)存

        • percent: 內(nèi)存使用率

        • used: 已使用的內(nèi)存

        查看交換內(nèi)存信息

        import?psutil

        print(psutil.swap_memory())
        #?sswap(total=19579396096,?used=15708250112,?free=3871145984,?percent=80.2,?sin=0,?sout=0)

        關(guān)于物理內(nèi)存和交換內(nèi)存之間的關(guān)系。

        物理內(nèi)存:就是實(shí)際的內(nèi)存條提供的臨時(shí)數(shù)據(jù)存儲空間,在 Windows 上右鍵點(diǎn)擊計(jì)算機(jī),再點(diǎn)擊屬性時(shí),上面顯示的安裝內(nèi)存(RAM)就是電腦的物理內(nèi)存。這些內(nèi)存是實(shí)際存在的,在你不給機(jī)器增加內(nèi)存條的時(shí)候是不會改變的。

        交換內(nèi)存:交換內(nèi)存是專門用來臨時(shí)存儲數(shù)據(jù)的,通常在頁面調(diào)度和交換進(jìn)程數(shù)據(jù)時(shí)使用。相當(dāng)于在進(jìn)行內(nèi)存整理的時(shí)候,會先把部分?jǐn)?shù)據(jù)放在硬盤的某個(gè)地方,類似我們整理衣柜,衣服一多直接整理會很麻煩,因此會先把部分衣服放在其他地方,等衣柜里的衣服整理完了再把放在其它地方的衣服拿回來。這個(gè)其他地方放在計(jì)算機(jī)中則代表硬盤的某個(gè)地方,也就是我們所說的交換區(qū)。通常當(dāng)使用交換內(nèi)存時(shí),是因?yàn)槲锢韮?nèi)存不足,正所謂衣柜,如果足夠大的話就沒必要拿出部分衣服放在其它地方, 直接在衣柜里就能解決了。

        虛擬內(nèi)存:首先,如果想要操作文件,可執(zhí)行程序等等,那么首先要把它們從磁盤上讀取到內(nèi)存中,因此 CPU 除了自己的那一部分小小的空間外,要想操作數(shù)據(jù),只能操作內(nèi)存里的數(shù)據(jù)。但是當(dāng)內(nèi)存不夠了,那么便會在硬盤上開辟一份虛擬內(nèi)存,將物理內(nèi)存里的部分?jǐn)?shù)據(jù)放在虛擬內(nèi)存當(dāng)中。硬盤的空間很大,即使普通電腦安裝的固態(tài)硬盤也有一百個(gè) G,因此可以拿出一部分充當(dāng)虛擬內(nèi)存。不過虛擬內(nèi)存雖說是內(nèi)存,但畢竟在硬盤上,速度絕對和 CPU 直接從物理內(nèi)存里讀取數(shù)據(jù)的速度相差甚遠(yuǎn)。這也是為什么那些大型網(wǎng)站將經(jīng)常被訪問的一些數(shù)據(jù)放在 Redis 緩存里,而不是放在硬盤或者數(shù)據(jù)庫上。

        磁盤相關(guān)

        查看磁盤分區(qū)、磁盤使用率和磁盤 IO 信息

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.disk_partitions())
        """
        [sdiskpart(device='C:\\',?mountpoint='C:\\',?fstype='NTFS',?opts='rw,fixed'),
        ?sdiskpart(device='D:\\',?mountpoint='D:\\',?fstype='NTFS',?opts='rw,fixed'),
        ?sdiskpart(device='E:\\',?mountpoint='E:\\',?fstype='NTFS',?opts='rw,fixed')]
        """

        #?可以看到一共有三個(gè)盤符,fstype表示文件系統(tǒng)格式是NTFS,opts中的rw表示可讀寫
        #?里面有一個(gè)參數(shù)?all,?默認(rèn)為?False,?如果指定為?True,?那么返回的內(nèi)容還會包含?/proc?等特殊文件系統(tǒng)的掛載信息
        #?由于我這里是?Windows,?所以兩者沒區(qū)別

        查看某個(gè)磁盤使用情況

        import?psutil

        print(psutil.disk_usage("C:\\"))
        #?sdiskusage(total=267117391872,?used=88213196800,?free=178904195072,?percent=33.0)

        查看磁盤 IO 統(tǒng)計(jì)信息

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.disk_io_counters())
        #?sdiskio(read_count=1270037,?write_count=2146886,?read_bytes=34637616128,?write_bytes=53505994240,?read_time=551,?write_time=1258)
        • read_count: 讀次數(shù)

        • write_count: 寫次數(shù)

        • read_bytes: 讀的字節(jié)數(shù)

        • write_bytes: 寫的字節(jié)數(shù)

        • read_time: 讀時(shí)間

        • write_time: 寫時(shí)間

        默認(rèn)返回的是所有磁盤加起來的統(tǒng)計(jì)信息,我們可以指定 perdisk=True,則分別列出每一個(gè)磁盤的統(tǒng)計(jì)信息。

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.disk_io_counters(perdisk=True))
        """
        {'PhysicalDrive0':?sdiskio(read_count=1262459,?write_count=2149207,?read_bytes=34598280704,?write_bytes=53708976128,?read_time=532,?write_time=1261),
        ?'PhysicalDrive1':?sdiskio(read_count=7702,?write_count=98,?read_bytes=41695232,?write_bytes=4730880,?read_time=19,?write_time=0)}
        """

        網(wǎng)絡(luò)相關(guān)

        查看網(wǎng)卡的網(wǎng)絡(luò) IO 統(tǒng)計(jì)信息

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.net_io_counters())
        """
        snetio(bytes_sent=536008958,?bytes_recv=8676204996,?packets_sent=2725499,?packets_recv=7225179,?errin=0,?errout=9,?dropin=0,?dropout=0)
        """

        #?bytes_sent:?發(fā)送的字節(jié)數(shù)
        #?bytes_recv:?接收的字節(jié)數(shù)
        #?packets_sent:?發(fā)送的包數(shù)據(jù)量
        #?packets_recv:?接收的包數(shù)據(jù)量
        #?errin:?接收包時(shí),?出錯(cuò)的次數(shù)
        #?errout:?發(fā)送包時(shí),?出錯(cuò)的次數(shù)
        #?dropin:?接收包時(shí),?丟棄的次數(shù)
        #?dropout:?發(fā)送包時(shí),?丟棄的次數(shù)


        #?里面還有一個(gè)?pernic?參數(shù),?如果為?True,?則列出所有網(wǎng)卡的信息
        pprint(psutil.net_io_counters(pernic=True))
        """
        {'Loopback?Pseudo-Interface?1':?snetio(bytes_sent=0,?bytes_recv=0,?packets_sent=0,?packets_recv=0,?errin=0,?errout=0,?dropin=0,?dropout=0),
        ?'WLAN':?snetio(bytes_sent=534497477,?bytes_recv=8678905297,?packets_sent=2706204,?packets_recv=7244187,?errin=0,?errout=0,?dropin=0,?dropout=0),
        ?'以太網(wǎng)':?snetio(bytes_sent=0,?bytes_recv=0,?packets_sent=0,?packets_recv=0,?errin=0,?errout=0,?dropin=0,?dropout=0),
        ?'以太網(wǎng)?2':?snetio(bytes_sent=3612804,?bytes_recv=7955853,?packets_sent=32818,?packets_recv=26442,?errin=0,?errout=9,?dropin=0,?dropout=0),
        ?'本地連接*?2':?snetio(bytes_sent=0,?bytes_recv=0,?packets_sent=0,?packets_recv=0,?errin=0,?errout=0,?dropin=0,?dropout=0),
        ?'本地連接*?3':?snetio(bytes_sent=0,?bytes_recv=0,?packets_sent=0,?packets_recv=0,?errin=0,?errout=0,?dropin=0,?dropout=0),
        ?'藍(lán)牙網(wǎng)絡(luò)連接':?snetio(bytes_sent=0,?bytes_recv=0,?packets_sent=0,?packets_recv=0,?errin=0,?errout=0,?dropin=0,?dropout=0)}
        """

        查看網(wǎng)絡(luò)接口信息

        from?pprint?import?pprint
        import?psutil

        #?以字典的形式返回網(wǎng)卡的配置信息,?包括?IP?地址、Mac地址、子網(wǎng)掩碼、廣播地址等等
        pprint(psutil.net_if_addrs())
        """
        {'Loopback?Pseudo-Interface?1':?[snicaddr(family=<AddressFamily.AF_INET:?2>,?address='127.0.0.1',?netmask='255.0.0.0',?broadcast=None,?ptp=None),
        ?????????????????????????????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='::1',?netmask=None,?broadcast=None,?ptp=None)],
        ?'WLAN':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='04-EA-56-8C-36-24',?netmask=None,?broadcast=None,?ptp=None),
        ??????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='192.168.8.115',?netmask='255.255.255.0',?broadcast=None,?ptp=None),
        ??????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fd94:e9ee:f230:6e00:55c9:8d1e:f23d:3acc',?netmask=None,?broadcast=None,?ptp=None),
        ??????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fd94:e9ee:f230:6e00:dc07:1987:2395:d871',?netmask=None,?broadcast=None,?ptp=None),
        ??????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::55c9:8d1e:f23d:3acc',?netmask=None,?broadcast=None,?ptp=None)],
        ?'以太網(wǎng)':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='9C-7B-EF-15-FC-2F',?netmask=None,?broadcast=None,?ptp=None),
        ?????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='10.254.61.6',?netmask='255.255.255.0',?broadcast=None,?ptp=None),
        ?????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='169.254.54.71',?netmask='255.255.0.0',?broadcast=None,?ptp=None),
        ?????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::4826:a6a6:b5f4:3647',?netmask=None,?broadcast=None,?ptp=None)],
        ?'以太網(wǎng)?2':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='00-FF-B3-BA-07-AE',?netmask=None,?broadcast=None,?ptp=None),
        ???????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='2.0.1.32',?netmask='255.255.255.0',?broadcast=None,?ptp=None),
        ???????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::cc21:26c6:9327:1355',?netmask=None,?broadcast=None,?ptp=None)],
        ?'本地連接*?2':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='04-EA-56-8C-36-25',?netmask=None,?broadcast=None,?ptp=None),
        ?????????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='169.254.45.234',?netmask='255.255.0.0',?broadcast=None,?ptp=None),
        ?????????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::d958:b3fe:ef3d:2dea',?netmask=None,?broadcast=None,?ptp=None)],
        ?'本地連接*?3':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='06-EA-56-8C-36-24',?netmask=None,?broadcast=None,?ptp=None),
        ?????????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='169.254.41.166',?netmask='255.255.0.0',?broadcast=None,?ptp=None),
        ?????????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::6474:c583:1626:29a6',?netmask=None,?broadcast=None,?ptp=None)],
        ?'藍(lán)牙網(wǎng)絡(luò)連接':?[snicaddr(family=<AddressFamily.AF_LINK:?-1>,?address='04-EA-56-8C-36-28',?netmask=None,?broadcast=None,?ptp=None),
        ????????????snicaddr(family=<AddressFamily.AF_INET:?2>,?address='169.254.135.205',?netmask='255.255.0.0',?broadcast=None,?ptp=None),
        ????????????snicaddr(family=<AddressFamily.AF_INET6:?23>,?address='fe80::5cbd:8913:7499:87cd',?netmask=None,?broadcast=None,?ptp=None)]}

        """

        #?返回網(wǎng)卡的詳細(xì)信息,?包括是否啟動、通信類型、傳輸速度、mtu
        pprint(psutil.net_if_stats())
        """
        {'Loopback?Pseudo-Interface?1':?snicstats(isup=True,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=1073,?mtu=1500),
        ?'WLAN':?snicstats(isup=True,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=866,?mtu=1500),
        ?'以太網(wǎng)':?snicstats(isup=False,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=0,?mtu=1500),
        ?'以太網(wǎng)?2':?snicstats(isup=True,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=10,?mtu=1400),
        ?'本地連接*?2':?snicstats(isup=False,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=0,?mtu=1500),
        ?'本地連接*?3':?snicstats(isup=False,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=0,?mtu=1500),
        ?'藍(lán)牙網(wǎng)絡(luò)連接':?snicstats(isup=False,?duplex=<NicDuplex.NIC_DUPLEX_FULL:?2>,?speed=3,?mtu=1500)}
        """

        查看當(dāng)前機(jī)器的網(wǎng)絡(luò)連接

        from?pprint?import?pprint
        import?psutil

        #?以列表的形式返回每個(gè)網(wǎng)絡(luò)連接的詳細(xì)信息
        #?里面接受一個(gè)參數(shù),?默認(rèn)是?"inet",?當(dāng)然我們也可以指定為其它,?比如?"tcp"
        pprint(psutil.net_connections())
        """
        [sconn(fd=-1,?family=,?type=,?laddr=addr(ip='0.0.0.0',?port=1024),?raddr=(),?status='LISTEN',?pid=940),
        ?sconn(fd=-1,?family=,?type=,?laddr=addr(ip='0.0.0.0',?port=5432),?raddr=(),?status='LISTEN',?pid=7620),
        ?sconn(fd=-1,?family=,?type=,?laddr=addr(ip='127.0.0.1',?port=10637),?raddr=addr(ip='127.0.0.1',?port=10638),?status='ESTABLISHED',?pid=10152),
        ?sconn(fd=-1,?family=,?type=,?laddr=addr(ip='127.0.0.1',?port=10613),?raddr=addr(ip='127.0.0.1',?port=10612),?status='ESTABLISHED',?pid=10152),
        ?sconn(fd=-1,?family=,?type=,?laddr=addr(ip='::',?port=5353),?raddr=(),?status='NONE',?pid=8820),
        ?sconn(fd=-1,?family=,?type=,?laddr=addr(ip='127.0.0.1',?port=54541),?raddr=(),?status='LISTEN',?pid=2908),
        ?sconn(fd=-1,?family=,?type=,?
        ?....
        ?....
        ?....
        ]
        """


        #?是不是很方便呢??在?Linux?中有兩個(gè)命令可以做到這一點(diǎn),?netstat?和?ss
        #?$?netstat?-nat
        #?$?ss?-nat

        #?但是在生產(chǎn)環(huán)境中,?線上服務(wù)器很多都是最小化安裝,?并不能保證每臺機(jī)器上都有?ss?或者?netstat?命令,?而這個(gè)時(shí)候?psutil?就派上用場了

        查看當(dāng)前登錄的用戶信息

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.users())??
        #?[suser(name='satori',?terminal=None,?host='0.0.0.0',?started=1609841661.0,?pid=None)]
        • name: 用戶名

        • terminal: 終端

        • host: 主機(jī)地址

        • started: 登錄時(shí)間

        • pid: 進(jìn)程id

        查看系統(tǒng)的啟動時(shí)間

        from?pprint?import?pprint
        import?psutil
        import?datetime

        pprint(psutil.boot_time())??#?1585282271.0
        print(datetime.datetime.fromtimestamp(psutil.boot_time()))??#?2020-03-27?12:11:11

        進(jìn)程管理

        psutil 還提供了很多和進(jìn)程管理相關(guān)的功能函數(shù),非常的豐富,我們來看一下。

        查看當(dāng)前存在的所有進(jìn)程的 pid

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.pids())
        """
        [0,
        ?4,
        ?144,
        ?512,
        ?536,
        ?632,
        ?640,
        ?664,
        ?696,
        ?768,
        ?776,
        ?...
        ?...
        ?...
        ]
        """

        查看某個(gè)進(jìn)程是否存在

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.pid_exists(22333))??#?False
        pprint(psutil.pid_exists(0))??#?True

        返回所有進(jìn)程(Process)對象組成的迭代器

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.process_iter())??#?

        根據(jù) pid 獲取一個(gè)進(jìn)程對應(yīng)的 Process 對象

        from?pprint?import?pprint
        import?psutil

        pprint(psutil.Process(pid=0))??#?psutil.Process(pid=0,?name='System?Idle?Process',?started='2020-2-27?09:07:47')

        獲取進(jìn)程相關(guān)的具體信息

        我們說根據(jù) pid 可以獲取一個(gè)進(jìn)程對應(yīng)的 Process 對象,而這個(gè)對象里面包含了該進(jìn)程的全部信息。

        ?from?pprint?import?pprint
        import?psutil

        p?=?psutil.Process(pid=16948)

        #?進(jìn)程名稱
        print(p.name())?#?WeChat.exe

        #?進(jìn)程的exe路徑
        print(p.exe())?#?D:\WeChat\WeChat.exe

        #?進(jìn)程的工作目錄
        print(p.cwd())?#?D:\WeChat

        #?進(jìn)程啟動的命令行
        print(p.cmdline())?#?['D:\\WeChat\\WeChat.exe']

        #?當(dāng)前進(jìn)程id
        print(p.pid)?#?16948

        #?父進(jìn)程id
        print(p.ppid())?#?11700

        #?父進(jìn)程
        print(p.parent())?#?psutil.Process(pid=11700,?name='explorer.exe',?started='09:19:06')

        #?子進(jìn)程列表
        pprint(p.children())
        """
        [psutil.Process(pid=17452,?name='WeChatWeb.exe',?started='09:21:02'),?
        ?psutil.Process(pid=16216,?name='WeChatApp.exe',?started='09:21:40'),?
        ?psutil.Process(pid=13452,?name='SogouCloud.exe',?started='09:22:14')]
        """


        #?進(jìn)程狀態(tài)
        print(p.status())?#?running

        #?進(jìn)程用戶名
        print(p.username())?#?LAPTOP-264ORES3\satori

        #?進(jìn)程創(chuàng)建時(shí)間,返回時(shí)間戳
        print(p.create_time())?#?1561775539.0

        #?進(jìn)程終端
        #?在windows上無法使用
        try:
        ????print(p.terminal())
        except?Exception?as?e:
        ????print(e)?#?'Process'?object?has?no?attribute?'terminal'

        #?進(jìn)程使用的cpu時(shí)間
        print(p.cpu_times())??#?pcputimes(user=133.3125,?system=188.203125,?children_user=0.0,?children_system=0.0)

        #?進(jìn)程所使用的的內(nèi)存
        print(p.memory_info())
        """
        pmem(rss=128634880,?vms=117067776,?num_page_faults=12193918,?
        ?????peak_wset=263921664,?wset=128634880,?peak_paged_pool=1398584,?
        ?????paged_pool=1329936,?peak_nonpaged_pool=313896,?nonpaged_pool=152192,?
        ?????pagefile=117067776,?peak_pagefile=201670656,?private=117067776)
        """


        #?進(jìn)程打開的文件
        pprint(p.open_files())
        """
        [popenfile(path='C:\\Users\\satori\\Documents\\WeChat?Files\\wxid_3ksrps1o47mf22\\Msg\\Media.db-wal',?fd=-1),
        ?popenfile(path='C:\\Users\\satori\\AppData\\Roaming\\Tencent\\WeChat\\All?Users\\CefResources\\2581\\qb_200_percent.pak',?fd=-1),
        ?popenfile(path='C:\\Users\\satori\\Documents\\WeChat?Files\\wxid_3ksrps1o47mf22\\Msg\\Multi\\MSG0.db-shm',?fd=-1),
        ?popenfile(path='C:\\Program?Files\\WindowsApps\\Microsoft.LanguageExperiencePackzh-CN_18362.28.87.0_neutral__8wekyb3d8bbwe\\Windows\\System32\\zh-CN\\dui70.dll.mui',?fd=-1),
        ?popenfile(path='C:\\Users\\satori\\Documents\\WeChat?Files\\wxid_3ksrps1o47mf22\\Msg\\Multi\\MediaMSG2.db-shm',?fd=-1),
        ?popenfile(path='C:\\Users\\satori\\Documents\\WeChat?Files\\wxid_3ksrps1o47mf22\\Msg\\Emotion.db-wal',?fd=-1),
        ?popenfile(path='C:\\Windows\\Fonts\\msyh.ttc',?fd=-1),
        ?......
        ?......
        ?......
        ?]
        """


        #?進(jìn)程相關(guān)的網(wǎng)絡(luò)連接
        pprint(p.connections())
        """
        [pconn(fd=-1,?family=,?type=,?laddr=addr(ip='192.168.8.115',?port=5162),?raddr=addr(ip='183.3.234.107',?port=443),?status='ESTABLISHED'),
        ?pconn(fd=-1,?family=,?type=,?laddr=addr(ip='192.168.8.115',?port=13856),?raddr=addr(ip='61.151.168.204',?port=80),?status='CLOSE_WAIT'),
        ?pconn(fd=-1,?family=,?type=,?laddr=addr(ip='0.0.0.0',?port=8680),?raddr=(),?status='LISTEN')]
        """


        #?進(jìn)程內(nèi)的線程數(shù)量,這個(gè)進(jìn)程開啟了多少個(gè)線程
        print(p.num_threads())??#?66

        #?這個(gè)進(jìn)程內(nèi)的所有線程信息
        pprint(p.threads())
        """
        [pthread(id=13340,?user_time=113.328125,?system_time=179.015625),
        ?pthread(id=17120,?user_time=0.0,?system_time=0.0625),
        ?pthread(id=7216,?user_time=0.15625,?system_time=0.515625),
        ?pthread(id=13360,?user_time=0.703125,?system_time=0.21875),
        ?pthread(id=10684,?user_time=0.015625,?system_time=0.078125),
        ?pthread(id=13552,?user_time=2.9375,?system_time=0.171875),
        ?pthread(id=12620,?user_time=0.265625,?system_time=0.296875),
        ?pthread(id=14492,?user_time=0.015625,?system_time=0.03125),
        ?pthread(id=14568,?user_time=0.0,?system_time=0.046875),
        ?pthread(id=17112,?user_time=0.015625,?system_time=0.0625),
        ?pthread(id=9344,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=13544,?user_time=0.0,?system_time=0.0),
        ?pthread(id=10028,?user_time=0.078125,?system_time=0.125),
        ?pthread(id=4920,?user_time=0.015625,?system_time=0.0625),
        ?pthread(id=5744,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=7044,?user_time=0.0,?system_time=0.0),
        ?pthread(id=14064,?user_time=0.0,?system_time=0.0),
        ?pthread(id=11916,?user_time=0.0,?system_time=0.0),
        ?pthread(id=1316,?user_time=0.0,?system_time=0.0),
        ?pthread(id=18100,?user_time=0.0,?system_time=0.0),
        ?pthread(id=2992,?user_time=0.0,?system_time=0.0),
        ?pthread(id=8956,?user_time=0.0,?system_time=0.0),
        ?pthread(id=8588,?user_time=0.03125,?system_time=0.03125),
        ?pthread(id=3944,?user_time=0.0,?system_time=0.03125),
        ?pthread(id=15828,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=7348,?user_time=0.0,?system_time=0.03125),
        ?pthread(id=3400,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=8628,?user_time=0.0,?system_time=0.0),
        ?pthread(id=2400,?user_time=0.0,?system_time=0.0),
        ?pthread(id=9432,?user_time=1.28125,?system_time=0.171875),
        ?pthread(id=11544,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=12348,?user_time=2.96875,?system_time=3.78125),
        ?pthread(id=3444,?user_time=0.0,?system_time=0.0),
        ?pthread(id=17476,?user_time=0.0,?system_time=0.0),
        ?pthread(id=15856,?user_time=0.0,?system_time=0.015625),
        ?pthread(id=12248,?user_time=0.0,?system_time=0.0),
        ?pthread(id=17280,?user_time=0.0,?system_time=0.0),
        ?......
        ?......
        ?......
        ?]
        """


        #?進(jìn)程的環(huán)境變量
        pprint(p.environ())
        """
        {'ALLUSERSPROFILE':?'C:\\ProgramData',
        ?'APPDATA':?'C:\\Users\\satori\\AppData\\Roaming',
        ?'COMMONPROGRAMFILES':?'C:\\Program?Files?(x86)\\Common?Files',
        ?'COMMONPROGRAMFILES(X86)':?'C:\\Program?Files?(x86)\\Common?Files',
        ?'COMMONPROGRAMW6432':?'C:\\Program?Files\\Common?Files',
        ?'COMPUTERNAME':?'LAPTOP-264ORES3',
        ?'COMSPEC':?'C:\\WINDOWS\\system32\\cmd.exe',
        ?'DRIVERDATA':?'C:\\Windows\\System32\\Drivers\\DriverData',
        ?'GOPATH':?'C:\\Users\\satori\\go',
        ?'HOMEDRIVE':?'C:',
        ?'HOMEPATH':?'\\Users\\satori',
        ?'LOCALAPPDATA':?'C:\\Users\\satori\\AppData\\Local',
        ?'LOGONSERVER':?'\\\\LAPTOP-264ORES3',
        ?'NUMBER_OF_PROCESSORS':?'12',
        ?'ONEDRIVE':?'C:\\Users\\satori\\OneDrive',
        ?'ONEDRIVECONSUMER':?'C:\\Users\\satori\\OneDrive',
        ?'ONLINESERVICES':?'Online?Services',
        ?'OS':?'Windows_NT',
        ?'PATH':?'C:\\Program?Files?(x86)\\Intel\\Intel(R)?Management?Engine?'
        ?????????'Components\\iCLS\\;C:\\Program?Files\\Intel\\Intel(R)?Management?'
        ?????????'Engine?'
        ?????????'Components\\iCLS\\;C:\\windows\\system32;C:\\windows;C:\\windows\\System32\\Wbem;C:\\windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\windows\\System32\\OpenSSH\\;C:\\Program?'
        ?????????'Files?(x86)\\Intel\\Intel(R)?Management?Engine?'
        ?????????'Components\\DAL;C:\\Program?Files\\Intel\\Intel(R)?Management?Engine?'
        ?????????'Components\\DAL;C:\\Program?Files?(x86)\\NVIDIA?'
        ?????????'Corporation\\PhysX\\Common;C:\\Program?'
        ?????????'Files\\Intel\\WiFi\\bin\\;C:\\Program?Files\\Common?'
        ?????????'Files\\Intel\\WirelessCommon\\;C:\\python37;c:\\python37\\Scripts;C:\\Program?'
        ?????????'Files\\Git\\cmd;E:\\instantclient_10_2;C:\\Program?'
        ?????????'Files\\Redis\\;D:\\ffmpeg\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Go\\bin;C:\\MingW\\bin;C:\\Users\\satori\\.cargo\\bin;C:\\python37\\Scripts\\;C:\\python37\\;C:\\python38\\Scripts\\;C:\\python38\\;C:\\Users\\satori\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\satori\\go\\bin',
        ?'PATHEXT':?'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
        ?'PLATFORMCODE':?'AN',
        ?'PROCESSOR_ARCHITECTURE':?'x86',
        ?'PROCESSOR_ARCHITEW6432':?'AMD64',
        ?'PROCESSOR_IDENTIFIER':?'Intel64?Family?6?Model?158?Stepping?10,?GenuineIntel',
        ?'PROCESSOR_LEVEL':?'6',
        ?'PROCESSOR_REVISION':?'9e0a',
        ?'PROGRAMDATA':?'C:\\ProgramData',
        ?'PROGRAMFILES':?'C:\\Program?Files?(x86)',
        ?'PROGRAMFILES(X86)':?'C:\\Program?Files?(x86)',
        ?'PROGRAMW6432':?'C:\\Program?Files',
        ?'PSMODULEPATH':?'C:\\Program?'
        ?????????????????'Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules',
        ?'PUBLIC':?'C:\\Users\\Public',
        ?'REGIONCODE':?'APJ',
        ?'SESSIONNAME':?'Console',
        ?'SYSTEMDRIVE':?'C:',
        ?'SYSTEMROOT':?'C:\\WINDOWS',
        ?'TBS_CONTENT_MAIN_RUNNER_INITIALIZED':?'1',
        ?'TEMP':?'C:\\Users\\satori\\AppData\\Local\\Temp',
        ?'TMP':?'C:\\Users\\satori\\AppData\\Local\\Temp',
        ?'USERDOMAIN':?'LAPTOP-264ORES3',
        ?'USERDOMAIN_ROAMINGPROFILE':?'LAPTOP-264ORES3',
        ?'USERNAME':?'satori',
        ?'USERPROFILE':?'C:\\Users\\satori',
        ?'VS140COMNTOOLS':?'C:\\Program?Files?(x86)\\Microsoft?Visual?Studio?'
        ???????????????????'14.0\\Common7\\Tools\\',
        ?'WINDIR':?'C:\\WINDOWS',
        ?'WXDRIVE_START_ARGS':?'--wxdrive-setting=0?--disable-gpu?'
        ???????????????????????'--disable-software-rasterizer?'
        ???????????????????????'--enable-features=NetworkServiceInProcess'}
        """


        #?結(jié)束進(jìn)程,?返回?None,?執(zhí)行之后微信就會被強(qiáng)制關(guān)閉,?當(dāng)然這里就不試了
        #?print(p.terminal())??#?None

        我們還可以調(diào)用 psutil.test 來模擬 ps 命令。

        import?psutil

        psutil.test()
        """
        USER?????????PID??%MEM?????VSZ?????RSS??NICE?STATUS??START???TIME??CMDLINE
        SYSTEM?????????0???0.0???60.0K????8.0K????????runni??Dec30??00:39??System?Idle?P
        SYSTEM?????????4???0.0??236.0K????1.4M????????runni??Dec30??14:32??System
        ?????????????144???0.2????8.1M???32.2M????????runni??Dec30??00:03??Registry
        ?????????????512???0.0????1.1M??304.0K????????runni??Dec30??00:00??smss.exe
        ?????????????536???0.0??912.0K????1.0M????????runni??Dec30??00:00??svchost.exe
        ?????????????632???0.1???13.0M???15.0M????????runni??Dec30??00:29??svchost.exe
        ?????????????640???0.0????2.1M????1.3M????????runni??Dec30??00:00??fontdrvhost.e
        satori???????664???0.1???26.1M???17.1M????32??runni??09:19??00:02??C:\WINDOWS\Sy
        ?????????????696???0.0????6.7M????3.8M????????runni??Dec30??00:04??WUDFHost.exe
        ?????????????768???0.0????1.9M????1.9M????????runni??Dec30??00:26??csrss.exe
        ......................
        ......................
        ......................
        ......................
        ......................
        """

        它是怎么做的呢?還記得我們之前說的 process_iter 嗎?會返回所有進(jìn)程的 Process 對象,直接依次輸出里面的信息即可。同理,我們也可以通過 process_iter 找到某一個(gè)進(jìn)程對應(yīng)的進(jìn)程 id。

        import?psutil

        for?prcs?in?psutil.process_iter():
        ????if?prcs.name().lower()?==?"wechat.exe":
        ????????print(prcs.pid)
        """
        16948
        """


        #?有了這個(gè)騷操作之后,我們便可以通過進(jìn)程?id?找到對應(yīng)的進(jìn)程
        #?然后修改里面的數(shù)據(jù)

        小結(jié)

        總的來說,這個(gè)庫是非常強(qiáng)大的,很好用,可以獲取很多底層的信息。

        Python貓技術(shù)交流群開放啦!群里既有國內(nèi)一二線大廠在職員工,也有國內(nèi)外高校在讀學(xué)生,既有十多年碼齡的編程老鳥,也有中小學(xué)剛剛?cè)腴T的新人,學(xué)習(xí)氛圍良好!想入群的同學(xué),請?jiān)诠杻?nèi)回復(fù)『交流群』,獲取貓哥的微信(謝絕廣告黨,非誠勿擾!)~

        近期熱門文章推薦:

        15個(gè)頂級Python庫,你必須要試試!
        工程師如何從技術(shù)轉(zhuǎn)型做管理?
        Python 為什么沒有 void 關(guān)鍵字?
        Python 動態(tài)賦值的陷阱

        感謝創(chuàng)作者的好文
        瀏覽 52
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            囯产精品久久久久久久久蜜桃精品 | 中文av无码av猫咪av伊人 | 91看片看·com | 俺来也俺也啪 | 色黄网| 国产高清不卡一区 | 家庭乱伦一区二区 | 麻豆免费在线观看视频 | 特黄视频 | 久久亚洲私人国产精品 |