從零開始的多程序生活之番外篇 - Python
主力大軍:從零開始的多程序生活 - 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~