【Python高級編程005 ● 多任務編程 ● 主進程會等待所有的子進程執行完以后再退出】



---------Python基礎編程---------

Author : AI菌


 

【內容講解】

1、主進程會等所有的子進程執行完成以后在退出
    為了保證子進程能夠正常的運行,主進程會等所有的子進程執行完成以后再銷毀
2、子進程還有沒執行結束,怎么結束主進程?
    方法一:
        提前銷毀子進程方式:子進程對象.terminate()
    方法二:
        設置守護主進程方式: 子進程對象.daemon = True
        設置守護主進程的目的是主進程退出前銷毀子進程,不讓主進程再等待子進程去執行。

 

【代碼演示】

"""
1、主進程會等所有的子進程執行完成以后在退出
    為了保證子進程能夠正常的運行,主進程會等所有的子進程執行完成以后再銷毀
2、子進程還有沒執行結束,怎么結束主進程?
    方法一:
        提前銷毀子進程方式:子進程對象.terminate()
    方法二:
    設置守護主進程方式: 子進程對象.daemon = True
    設置守護主進程的目的是主進程退出前銷毀子進程,不讓主進程再等待子進程去執行。
"""

import multiprocessing
import time


# 現在創建一個子進程,這個子進程執行完大概需要0.6秒鍾,現在讓主進程執行0.3秒鍾就退出程序
# 看看主進程是直接退出,還是等子線程執行完再退出

def task():
    for i in range(3):
        print("正在工作中。。。")
        time.sleep(0.2)


if __name__ == '__main__':
    # 創建子進程
    sub_process = multiprocessing.Process(target=task)
    # 啟動子進程執行對應的任務
    sub_process.start()
    # 主進程延時0.3秒
    time.sleep(0.3)
    print("主線程over了!!!")

 

【運行結果】

正在工作中。。。
正在工作中。。。
主線程over了!!!
正在工作中。。。

 

【結果說明】

主線程打印了“主線程over了”,子線程還沒有結束,繼續答應了正在工作中
說明主線程並未真正結束,而是等子線程執行完以后才結束。

 

【往期精彩】

▷【Python基礎編程196 ● 讀取文件的4種方式】
▷【Python基礎編程197 ● 讀取文件的4種方式】
▷【Python基礎編程198 ● 讀取文件的4種方式】
▷【Python基礎編程199 ● Python怎么讀/寫很大的文件】
▷【Python基礎編程200 ● 讀取文件的4種方式】
▷【Python基礎編程201 ● 讀取文件的4種方式】
▷【Python基礎編程202 ● 讀取文件的4種方式】
▷【Python基礎編程203 ● 讀取文件的4種方式】

 

【加群交流】




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM