1. 程式人生 > 實用技巧 >【Python高階程式設計006 ● 多工程式設計 ● 不等待子執行緒執行結束,主執行緒提前銷燬的方式】

【Python高階程式設計006 ● 多工程式設計 ● 不等待子執行緒執行結束,主執行緒提前銷燬的方式】


---------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: []

【結果說明】

1、add_data_process子程序中對全域性變數g_list新增資料,新增完畢後,
主程序和read_data_process中的全域性變數g_list並沒有新增資料,
說明程序之間不共享全域性變數。
2、主程序、讀資料程序和修資料程序, 三個程序分別操作的都是自己程序裡面的全域性變數my 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種方式】

【加群交流】