您現在的位置是:首頁 > 人文
python3|關於程序的基本知識,必須要會的小知識
如何實現守護程序
Python程式設計中,無論是開發的程式碼開發,還是測試的自動化指令碼編寫,很多的時候都會用到執行緒和程序的相關知識,後續的幾篇文章,會對此方面做一下簡單的梳理。
一方面是方便自己可以做一個筆記,另一方面也可以分享給需要的夥伴們。
而在此時突然間也發現了,原來我的頭條號存在的意義就在於——我活動的筆記本。
有價值,也就可以了,O(∩_∩)O哈哈~
併發和並行
既然是聊程式設計,就不得不知道的是這兩個概念——併發和並行 。
併發就是cpu交替的執行多個任務,單核cpu的機器中必然是併發的執行程式。
並行就是真正的一起執行多個任務。此場景主要是在多核cpu的機器中。
程序
程序是資源分配和排程執行的基本單位,也是資源分配的最小單位。
一個執行中的程式就是一個程序。
比如說:qq,微信,淘寶,eg。都可以被稱作一個程序。
程序實現多工
為什麼要讓多工並行,其實原因很簡單,就是最短的時間幹更多的事。
程序的建立
1、匯入程序模組
import multiprocessing
2、建立程序物件
p = multiprocessing。Process(target=func),這裡說明一下。程序物件可以帶的引數是target為必傳引數,值為函式名。name為可選引數,表示程序名稱。group為程序組,預設不選。如果是函式帶引數,可選args或者kwargs傳參。下面會做演示說明。
3、啟動程序物件
p。start()
沒有建立程序之前
#!/usr/bin/env pythonimport timedef sing(): for i in range(3): print(“唱歌。。。。”) time。sleep(0。5)def dance(): for i in range(3): print(“跳舞。。。。”) time。sleep(0。5)if __name__ == ‘__main__’: sing() dance()
結果是依次分六次執行完成
運用程序實現之後
#!/usr/bin/env pythonimport timeimport multiprocessingdef sing(): for i in range(3): print(“唱歌。。。。”) time。sleep(0。5)def dance(): for i in range(3): print(“跳舞。。。。”) time。sleep(0。5)if __name__ == ‘__main__’: sing_process = multiprocessing。Process(target=sing) dance_process = multiprocessing。Process(target=dance) sing_process。start() dance_process。start()
結果是唱歌和跳舞分三次執行完成
程序編號
常用的主要是當前程序編號和父程序編號,可以透過os模組獲取。
#!/usr/bin/env pythonimport timeimport multiprocessingimport osdef sing(num, name): print(“當前程序編號:”, os。getpid()) print(“當前程序父程序編號:”, os。getppid()) for i in range(num): print(f“{name}在唱第{i + 1}首歌。。。。”) time。sleep(0。5)def dance(num, name): print(“當前程序編號:”, os。getpid()) print(“當前程序父程序編號:”, os。getppid()) for i in range(num): print(f“{name}在跳第{i + 1}段舞。。。。”) time。sleep(0。5)if __name__ == ‘__main__’: print(“主程式程序編號:”, os。getpid()) sing_process = multiprocessing。Process(target=sing, args=(3, “喬治”)) dance_process = multiprocessing。Process(target=dance, kwargs={“name”: “阿碧姑娘”, “num”: 4}) sing_process。start() dance_process。start()
我們可以知道,兩個子程序的父程序為main函式中的主程式程序編號。同時,程序物件傳參方式也做了演示。
程序注意事項
主程序會等待所有子程序執行完之後再結束。
#!/usr/bin/env pythonimport multiprocessingimport timedef work(): for i in range(10): print(“————工作————-”) time。sleep(0。2)if __name__ == ‘__main__’: p = multiprocessing。Process(target=work) p。start() time。sleep(1) print(“主程式執行結束了。。。。”)
結果是
很明顯,當主程式執行結束後,程式並沒有退出,而是直到子程序執行完成後程式才結束。
那麼,如何讓主程式結束後,程式自動結束呢?
方法就是設定守護主程序。
daemon= True
需要注意的是設定主程序的守護程序要在start方法執行之前。
作為程序的入門知識,你會了嗎?
推薦文章
- 國產大飛機來了,哪些城市最受益?
國產大飛機,採取的是國際民航客機常見的“主製造商-供應商”模式,由位於上海的中國商飛擔任主製造商,將發動機、機體、機載系統等各大部分悉數外包...
- 中國好喝的醬香型白酒排名,這5款好喝不貴醬味十足!行家:會喝
秉衡的故事提起醬酒,不得不談貴州,貴州作為釀造醬酒的聖地,誕生了數不勝數的醬酒,而除了茅臺、珍酒之類的老牌醬酒酒企外,也有一些名氣雖不大,可酒質不錯的酒廠,譬如說這酒...
- 《重生之饑荒年代》三十一
臨近年關,家裡的事情就多了起來,陳蘇也不可能總是像之前那樣一有時間就去練彈弓,她還要幫著家裡做事,陳陽倒是不用做事,陳蘇讓他繼續練著...