1. 程式人生 > 實用技巧 >【Python高階程式設計005 ● 多工程式設計 ● 主程序會等待所有的子程序執行完以後再退出】

【Python高階程式設計005 ● 多工程式設計 ● 主程序會等待所有的子程序執行完以後再退出】


---------Python基礎程式設計---------

Author : AI菌


【內容講解】

程序之間不共享全域性變數:
    建立子程序會對主程序資源進行拷貝,也就是說子程序是主程序的一個副本,好比是一對雙胞胎。
    之所以程序之間不共享全域性變數,是因為操作的不是同一個程序裡面的全域性變數,
    只不過不同程序裡面的全域性變數名字相同而已。

【程式碼演示】

"""
程序之間不共享全域性變數:
    建立子程序會對主程序資源進行拷貝,也就是說子程序是主程序的一個副本,好比是一對雙胞胎。
    之所以程序之間不共享全域性變數,是因為操作的不是同一個程序裡面的全域性變數,
    只不過不同程序裡面的全域性變數名字相同而已。
"""

import multiprocessing

# 測試程式碼
# result = type([])
# print(result)

# 定義全域性變數
g_list = list()


# 向全域性變數新增資料
def add_data():
    for i in range(3):
        g_list.append(i)
        print("add_data:", i)
    print("新增資料完畢後,add_data_process子程序中全域性變數g_list:", g_list)


# 讀取全域性變數的資料
def read_data():
    print("read_data:", g_list)


if __name__ == '__main__':
    # 新增資料程序
    add_data_process = multiprocessing.Process(target=add_data)
    # 讀取資料程序
    read_data_process = multiprocessing.Process(target=read_data)

    # 啟動程序執行對應的任務
    add_data_process.start()
    # 程序等待join, 主程序會等待子程序(add_data_process)執行完成以後,再繼續執行下面的程式碼
    add_data_process.join()
    # 啟動程序執行對應的任務
    read_data_process.start()

    print("主程序中全域性變數g_list:", g_list)

【執行結果】

add_data: 0
add_data: 1
add_data: 2
新增資料完畢後,add_data_process子程序中全域性變數g_list: [0, 1, 2]
主程序中全域性變數g_list: []
read_data: []

【結果說明】

add_data_process子程序中對全域性變數g_list新增資料,
新增完畢後,主程序和read_data_process中的全域性變數g_list
並沒有新增資料,
說明程序之間不共享全域性變數。

【往期精彩】

▷【Python基礎程式設計196 ● 讀取檔案的4種方式】
▷【Python基礎程式設計197 ● 讀取檔案的4種方式】


▷【Python基礎程式設計198 ● 讀取檔案的4種方式】
▷【Python基礎程式設計199 ● Python怎麼讀/寫很大的檔案】
▷【Python基礎程式設計200 ● 讀取檔案的4種方式】
▷【Python基礎程式設計201 ● 讀取檔案的4種方式】
▷【Python基礎程式設計202 ● 讀取檔案的4種方式】
▷【Python基礎程式設計203 ● 讀取檔案的4種方式】

【加群交流】