主力大軍:從零開始的多行程生活 - Python
其實本來昨天就應該完結了來的,但是還有很多細節沒有跟大家搞清楚,所以就可以趁機再水一篇文章啦~

這一次呢,就不用目錄啦,那是大佬用的,咱就好好寫作文吧,
昨天咱們寫的其實還是有點問題的,有什么問題呢?
我們執行這個py檔案的時候,是創建了一個主行程,這個py檔案里又創建了兩個行程,這兩個行程就是py檔案這個主行程的子行程,
有點繞,多讀幾遍,

但是我們運行的時候,主行程想要結束,就必須是在子行程全部結束的情況下才可以,
這樣是不可以的!

舉個例子來說,我們聊QQ的時候,QQ就是一個主程式,那些聊天的視窗就是她的子程式,當我們關閉QQ這個主程式的時候,那些子程式,也就是聊天視窗會跟著一起關閉,
這就是我們想要的效果,而不是主程式要等待子程式全部關掉才會關掉!
那么該怎么辦呢???
守護主行程!
再舉個例子來說明:
如果我們像上次那樣開行程的話,每一個行程就像是下了班還依然在公司作業的員工一樣,但是已經下班了,不能讓他們繼續再作業了!
所以,我們就要做到只要一下班,大家立馬停下作業!
也就是讓子行程去守護主行程,只要主行程GG(掛了)了,子行程也跟著歸西,

那么,該怎么做呢!
這里我們先設定兩個作業特別勤奮的員工:
from time import sleep
# 員工A,作業10次,也就是10×0.3,一共要耗時3秒
def funcA():
for i in range(10):
print('我為作業狂!')
sleep(0.3)
# 員工B,作業10次,也就是20×0.3,一共要耗時6秒
def funcB():
for i in range(20):
print('誰也不能阻止我作業!')
sleep(0.3)
然后,我們再來設定一個作業兩秒就下班的公司!
if __name__ == '__main__':
# 休眠兩秒,也就是作業兩秒
sleep(2)
print('下班了下班了,大家快走鴨!')
接著,我們再把這兩個員工的行程,放到下班的前面!
if __name__ == '__main__':
# 創建兩個很勤奮員工的行程
process_A = multiprocessing.Process(target=funcA)
process_B = multiprocessing.Process(target=funcB)
# 讓他們開始作業
process_A.start()
process_B.start()
# 2秒后下班
sleep(2)
print('下班了下班了,大家快走鴨!')
然后去運行,看一看效果:

可以看到,哪怕是下班了,這兩位還在努力的作業!
淚目!!!
所以各位還有什么理由不加班???

咳咳,那怎么守護主行程呢?也就是公司一下班,這倆就滾蛋呢?
很簡單!
在啟動行程的前面加上一句話就好了:
# 守護主行程
process_A.daemon = True
process_B.daemon = True
也許你要問了,這不是兩句話嘛?帶上注釋就是三句話鴨!
有多少個行程,就有多少句話唄~
整體代碼如下:
# 匯入行程模塊
import multiprocessing
# 匯入time里面的sleep,方便看到效果
from time import sleep
def funcA():
for i in range(10):
print('我為作業狂!')
sleep(0.3)
def funcB():
for i in range(20):
print('誰也不能阻止我作業!')
sleep(0.3)
# 不帶這個,會報錯
if __name__ == '__main__':
# 創建行程物件
process_A = multiprocessing.Process(target=funcA)
process_B = multiprocessing.Process(target=funcB)
# 守護主行程
process_A.daemon = True
process_B.daemon = True
# 啟動行程并執行任務
process_A.start()
process_B.start()
sleep(2)
print('下班了下班了,大家快走鴨!')
那就…點贊?收藏?關注?
拜托辣!!!

各位886~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/248637.html
標籤:其他
