【Python高階程式設計005 ● 多工程式設計 ● 主程序會等待所有的子程序執行完以後再退出】
阿新 • • 發佈: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: []
【結果說明】
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種方式】
【加群交流】