您現在的位置是:首頁 > 人文
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方法執行之前。
作為程序的入門知識,你會了嗎?
推薦文章
- 一賽季三萬熱力值?吃雞富婆商城面板全拉滿,500萬卻砸不出它
自從光子拿到版號之後,也是陸陸續續推出了不少高顏值的套裝和面板,雖然這是一款不需要氪金就可以玩的遊戲,但是對於一些富婆或者氪金玩家而言,只要官方推出新活動就將氪度直接拉滿...
- 晚餐發到朋友圈被贊爆了,蘿蔔這個吃法也太絕了,蒸蒸卷卷就上桌
冬天就是吃蘿蔔啊,今天蒸了好吃的蘿蔔粉條蒸卷 ,匆匆忙忙,直到蒸好才想起忘記加雞蛋的,不過一樣好吃啊...
- 狗子欺負小牛犢,結果鏟屎官被母牛堵路,牛:你教子無方,負全責
母牛倒也是個有想法的,眼見狗子做壞事拒不認罪,竟然盯上了狗子的“家長”——當小姐姐想去上廁所時,發現母牛不知何時來到了鐵門裡,堵在路中間不讓她經過...