【Python高階程式設計006 ● 多工程式設計 ● 不等待子執行緒執行結束,主執行緒提前銷燬的方式】
阿新 • • 發佈:2020-09-02
---------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種方式】
【加群交流】