您現在的位置是:首頁 > 人文

python3|關於程序的基本知識,必須要會的小知識

由 二哥聊職場 發表于 人文2022-09-26
簡介sleep(1)print(“主程式執行結束了

如何實現守護程序

Python程式設計中,無論是開發的程式碼開發,還是測試的自動化指令碼編寫,很多的時候都會用到執行緒和程序的相關知識,後續的幾篇文章,會對此方面做一下簡單的梳理。

一方面是方便自己可以做一個筆記,另一方面也可以分享給需要的夥伴們。

而在此時突然間也發現了,原來我的頭條號存在的意義就在於——我活動的筆記本。

有價值,也就可以了,O(∩_∩)O哈哈~

python3|關於程序的基本知識,必須要會的小知識

併發和並行

既然是聊程式設計,就不得不知道的是這兩個概念——併發和並行 。

併發就是cpu交替的執行多個任務,單核cpu的機器中必然是併發的執行程式。

並行就是真正的一起執行多個任務。此場景主要是在多核cpu的機器中。

程序

程序是資源分配和排程執行的基本單位,也是資源分配的最小單位。

一個執行中的程式就是一個程序。

比如說:qq,微信,淘寶,eg。都可以被稱作一個程序。

python3|關於程序的基本知識,必須要會的小知識

程序實現多工

為什麼要讓多工並行,其實原因很簡單,就是最短的時間幹更多的事。

程序的建立

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()

結果是依次分六次執行完成

python3|關於程序的基本知識,必須要會的小知識

運用程序實現之後

#!/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()

結果是唱歌和跳舞分三次執行完成

python3|關於程序的基本知識,必須要會的小知識

程序編號

常用的主要是當前程序編號和父程序編號,可以透過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函式中的主程式程序編號。同時,程序物件傳參方式也做了演示。

python3|關於程序的基本知識,必須要會的小知識

程序注意事項

主程序會等待所有子程序執行完之後再結束。

#!/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(“主程式執行結束了。。。。”)

結果是

python3|關於程序的基本知識,必須要會的小知識

很明顯,當主程式執行結束後,程式並沒有退出,而是直到子程序執行完成後程式才結束。

那麼,如何讓主程式結束後,程式自動結束呢?

方法就是設定守護主程序。

daemon= True

python3|關於程序的基本知識,必須要會的小知識

需要注意的是設定主程序的守護程序要在start方法執行之前。

作為程序的入門知識,你會了嗎?

推薦文章