前言:我們知道父程序要負責**子程序占用的系統資源(就是父要給子收屍)
so父程序要等子程序結束之後收了屍才能結束,如果父程序先結束,子程序的資源就沒法被**,就會一直占用系統資源,就成了殭屍程序了
我們的python中如果父程序即使執行完了或者報錯了也要等待子程序結束收了屍再結束
舉個例子:我們要給500個人**郵件假設我們每傳送一封郵件需要0.1s 總耗時0.1*500 = 50s
那麼我們開啟了10個程序,每個程序負責50個郵件
所有程序傳送完郵件,我們需要得到乙個通知:所有的程序都已經傳送完畢(文字中的數字不重要,不要糾結)
defsend_mail(n):
print('
傳送郵件%s
'%n)
if__name__ == __main__
: p = process(target=send_mail())
p.start()
p.join()
#這個join叫做阻塞,直到子程序執行結束才執行後面的**
print('
所有郵件都已經發出了')
那麼我們有10個程序呢如何保證這10個程序都結束呢?
if__name__ == __main__
: lis = #
弄個列表裝程序
for i in range(10):
p = process(target=send_mail)
#建立乙個子程序 就把這個子程序放到列表中
p.start()
for i in
lis:
p.join()
#把所有的子程序都進行乙個阻塞判斷
print('
所有郵件的都已經發出了』)
總結:join方法可以理解成阻塞,直到被join的程序結束才執行這一句。所以可以join判斷程序是否結束
如果有多個程序需要判斷,可以弄乙個列表,每生成乙個程序,將程序放進去。然後迴圈這個列表進行join。
Python網編 程序池
如果我們有多少個任務就開啟多少個程序,實際上是很浪費資源的。由於我們計算機的cpu個數是有限的,所以我們起的程序數量時完全和cpu個數相關。程序池的概念 魚池是放魚的,水池是放水的,獎金池是放獎金的,顧名思義程序池就是放程序的。我們想象,先建立叫程序池容器,然後製作四個程序放到這個程序池裡,當有任務...
Python網編 守護程序
假如我有500臺機器,跑著500個程序,假如有一部分台機器掛了,我們怎麼能及時的知道呢?我們維護自己的機器當然要及時的直到啦 so 如果我們有乙個監控的軟體來實時的監控是不是就可以解決這個問題啦 其原理是 client端每隔乙個時間段 比如60秒 匯報給server端 沒有在正確的時間收到某台機器的...
Python網編 程序物件的其他方法
直接上 from multiprocessing import process import time class myprocess process def init self,a,b super init self.a a self.b b defrun self print start tim...