Python程序員都知道的入門(mén)知識(shí)の九

目錄:
1. 多線程練習(xí)
2. psutil初識(shí)
3. 小知識(shí)

目錄【Python程序員都知道的入門(mén)知識(shí)】


python自學(xué)之路

1. 多線程練習(xí)

for循環(huán)啟動(dòng)五條線程藻糖,打印當(dāng)前處于活躍狀態(tài)的線程數(shù)量:


Paste_Image.png

問(wèn)題出現(xiàn)了,明明for循環(huán)五次叮喳,加上一條主線程也就才六條線程被芳,怎么打印出來(lái)的卻是 <a>''current has 7 threads''</a>,多出一條是什么?
遍歷出所有線程(如下圖)馍悟,可以看出多了一條SockThread 守護(hù)線程畔濒。


Paste_Image.png

那么什么是SockThread,這個(gè)線程又是怎么出現(xiàn)的?
待續(xù)锣咒。侵状。。
在追查過(guò)程中發(fā)現(xiàn)了一個(gè)模塊:psutil

2. psutil初識(shí)

2.1. psutil是什么毅整?

來(lái)看看官方說(shuō)明:

Paste_Image.png

psutil趣兄,即process and system utilities。
是一個(gè)用于檢索當(dāng)前正在運(yùn)行的進(jìn)程和系統(tǒng)資源使用情況(包括:CPU悼嫉,內(nèi)存诽俯,磁盤(pán)、網(wǎng)絡(luò)等)的跨平臺(tái)庫(kù)承粤。
目前在github上有超過(guò)4200個(gè)開(kāi)源工程中使用到了psutil
官網(wǎng)中推薦了這個(gè):Sample暴区,可以參考著練一練。

2.2. 安裝

我是在Windows 64下裝了python2.7 辛臊,所以我下載安裝了:
psutil-5.0.1.win-amd64-py2.7.exe
psutil官方下載地址
psutil官方文檔

2.3. 與系統(tǒng)相關(guān)的函數(shù)

2.3.1. CPU

處理器時(shí)間
1仙粱、psutil.cpu_times(percpu = False)
返回一個(gè)名為scputimes的元組
2、psutil.cpu_times(percpu = True)
返回一個(gè)名為scputimes的元組列表(每個(gè)CPU處理器的各種模式的時(shí)間)

實(shí)際返回的(無(wú)論是單個(gè)元組還是元組列表中的)元素也跟系統(tǒng)有關(guān)彻舰。以下是通有元素說(shuō)明:

  • user:處理器處理用戶(hù)(Linux下包括游客)所用的時(shí)間
  • system:處理器處理系統(tǒng)內(nèi)核所用的時(shí)間
  • idle:什么都不做所花的事

與平臺(tái)相關(guān)的元素:

  • nice 【UNIX】
  • iowait 【Linux】
  • irq【Linux,BSD】
  • softirq 【Linux】
  • steal 【Linux 2.6.11+】
  • guest【Linux 2.6.24+】
  • guest_nice 【Linux 3.2.0+】
  • interrupt 【W(wǎng)indows】
  • dpc 【W(wǎng)indows】

Paste_Image.png

處理器使用頻率
1伐割、psutil.cpu_percent(interval=None, percpu=False)
2候味、psutil.cpu_times_percent(interval=None, percpu=False)
處理器數(shù)量
psutil.cpu_count(logical=True)
處理器數(shù)據(jù)
psutil.cpu_stats()

Paste_Image.png

2.3.2. Memory

虛擬內(nèi)存
psutil.virtual_memory()
交換內(nèi)存
psutil.swap_memory()

Paste_Image.png

2.3.3. Disks

磁盤(pán)分配
psutil.disk_partitions(all = False)
磁盤(pán)使用情況
psutil.disk_usage(path)
磁盤(pán)讀寫(xiě)計(jì)數(shù)器
psutil.disk_io_counters(perdisk = False)

Paste_Image.png

2.3.4. Network

網(wǎng)絡(luò)讀寫(xiě)計(jì)數(shù)器
psutil.net_io_counters(pernic = False)
網(wǎng)絡(luò)連接
psutil.net_connections(kind = 'inet')

Paste_Image.png

網(wǎng)絡(luò)適配器關(guān)聯(lián)的地址
psutil.net_if_addrs()
網(wǎng)絡(luò)適配器數(shù)據(jù)
psutil.net_if_stats()

Paste_Image.png

2.3.5. 其他系統(tǒng)信息

引導(dǎo)時(shí)間
psutil.boot_time()
系統(tǒng)當(dāng)前用戶(hù)
psutil.users()

Paste_Image.png

2.4. psutil操作進(jìn)程

2.4.1. 函數(shù)

正在運(yùn)行的進(jìn)程ID列表
psutil.pids()(為避免出現(xiàn)競(jìng)爭(zhēng)條件,不推薦使用)
根據(jù)進(jìn)程ID判斷進(jìn)程是否在運(yùn)行列表中
psutil.pid_exists(pid)
進(jìn)程ID迭代器
psutil.process_iter()
等待列表進(jìn)程結(jié)束
psutil.wait_procs(procs,timeout = none , callback = none)

2.4.2. 進(jìn)程異常類(lèi)

異掣粜模基類(lèi)
class psutil.Error
無(wú)此進(jìn)程
class psutil.NoSuchProcess(pid ,name = none ,msg = none )
僵尸進(jìn)程
class psutil.ZombieProcess(pid ,name = none ,ppid =none , msg = none)
拒絕訪問(wèn)
class psutil.AccessDenied(pid = none , name = none ,msg = none)
超時(shí)時(shí)間已到
class psutil.TimeoutExpired(second , pid =none ,name = none ,msg = none)

2.4.3. 進(jìn)程類(lèi)Process

class psutil.Process(pid = none)
函數(shù):(詳情移步:psutil.processes

  • oneshot()
  • pid
  • ppid()
  • name()
  • exe()
  • cmdline()
  • environ()
  • create_time()
  • ad_dict(attrs = none ,ad_value = none)
  • parent()
  • status()
  • cwd()
  • username()
  • uids()
  • gids()
  • terminal()
  • nice(value = none)
  • idnice(ioclass = none ,value = none)
  • rlimit(resource , limits = none)
  • io_counters()
  • num_ctx_switches()
  • num_fds()
  • num_handles()
  • num_threads()
  • threads()
  • cpu_times()
  • cpu_percent(interval = none)
  • cpu_affinity(cpus = none)
  • memory_info()
  • memory_ex()
  • memory_full_info()
  • memory_percent(memtype = 'rss')
  • memory_maps(groups =Ture)
  • children(recursive = False)
  • open_files()
  • connections(kind = 'inet')
  • is_running()
  • send_signal(signal)
  • suspend()
  • resume()
  • terminate()
  • kill()
  • wait(timeout = none)

2.4.4. 進(jìn)程開(kāi)啟類(lèi)Popen

class psutil.Popen(*args , **kwargs)
用Popen打開(kāi)兩個(gè)應(yīng)用進(jìn)程:Foxmail.exeMockingBot.exe白群,然后結(jié)束并殺掉這兩個(gè)進(jìn)程。

Paste_Image.png

運(yùn)行結(jié)果:

Paste_Image.png

2.4. Windows系統(tǒng)下的 services

系統(tǒng)服務(wù)迭代器
psutil.win_service_iter()
根據(jù)名字獲取服務(wù)
psutil.win_service_get(name)
Windows服務(wù)對(duì)象
class psutil.WindowsService

  • name()
  • display_name()
  • binpath()
  • username()
  • start_type()
  • pid()
  • status()
  • description()
  • as_dict()

2.5. 常量

Constants

3. 小知識(shí)

3.1. python的傳參

python傳參的時(shí)候可以帶上形式參數(shù)名硬霍,如本文中的例子:
psutil.cpu_times(False)
也可以寫(xiě)成:
psutil.cpu_times(percpu = False)

Paste_Image.png

3.2. python的迭代器

假設(shè)現(xiàn)在拿到一個(gè)迭代器帜慢,it
如:it = psutil.win_service_iter()
單個(gè)獲取迭代器中的元素:
it.next()
for循環(huán)獲取元素:

for i in it:
    print i

3.3. 僵尸進(jìn)程

進(jìn)程在調(diào)用exit命令結(jié)束自己生命的時(shí)候并沒(méi)有真正被銷(xiāo)毀,而是轉(zhuǎn)為僵尸狀態(tài)唯卖,稱(chēng)為一個(gè)僵尸進(jìn)程
僵尸進(jìn)程需要由他的父進(jìn)程來(lái)收尸粱玲,如果父進(jìn)程結(jié)束則轉(zhuǎn)而由初始化進(jìn)程來(lái)收尸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拜轨,一起剝皮案震驚了整個(gè)濱河市抽减,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌橄碾,老刑警劉巖卵沉,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異法牲,居然都是意外死亡偎箫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)皆串,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人眉枕,你說(shuō)我怎么就攤上這事恶复。” “怎么了速挑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵谤牡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我姥宝,道長(zhǎng)翅萤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任腊满,我火速辦了婚禮套么,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碳蛋。我一直安慰自己胚泌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布肃弟。 她就那樣靜靜地躺著玷室,像睡著了一般零蓉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上穷缤,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天敌蜂,我揣著相機(jī)與錄音,去河邊找鬼津肛。 笑死章喉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的快耿。 我是一名探鬼主播囊陡,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掀亥!你這毒婦竟也來(lái)了撞反?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搪花,失蹤者是張志新(化名)和其女友劉穎遏片,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體撮竿,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吮便,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幢踏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片髓需。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖房蝉,靈堂內(nèi)的尸體忽然破棺而出僚匆,到底是詐尸還是另有隱情,我是刑警寧澤搭幻,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布咧擂,位于F島的核電站,受9級(jí)特大地震影響檀蹋,放射性物質(zhì)發(fā)生泄漏叁巨。R本人自食惡果不足惜英古,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寂嘉,春花似錦卷哩、人聲如沸瘪撇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)识脆。三九已至设联,卻和暖如春善已,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背离例。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工换团, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宫蛆。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓艘包,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耀盗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子想虎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容