程序:
'''
定義乙個全域性變數g_num,分別建立2個子程序對g_num執行不同的操作,並輸出操作後的結果
'''from multiprocessing import process
def plus():
print('--------子程序1開始--------')
global g_num # 宣告它是全域性變數
g_num += 50
print('g_num is %d' % g_num)
print('--------子程序1結束--------')
def minus():
print('--------子程序2開始--------')
global g_num # 宣告它是全域性變數
g_num -= 50
print('g_num is %d' % g_num)
print('--------子程序2結束--------')
g_num = 100 # 主程序初始值100
if __name__ == '__main__':
print('--------主程序開始--------')
print('g_num is %d' % g_num)
p1 = process(target=plus) #例項化程序1
p2 = process(target=minus()) # 例項化程序2
p1.start() # 開始程序1
p2.start() # 開始程序2
p1.join() # 等待程序1結束
p2.join() # 等待程序2結束
print('--------主程序結束--------')
在上述**中,分別建立了2個子程序,乙個子程序中令g_num加上50,另乙個子程序令g_num減少50,但是從執行結果可以看出,g_num在父程序和2個子程序中的初始值都是100,也就是全域性變數g_num在乙個程序中的結果,沒有傳遞到下乙個程序中,就是程序之間沒有共享資訊。
執行緒:
'''
證明執行緒之間可以通訊:
定義乙個全域性變數g_num.分別建立2個子執行緒對g_num執行不同的操作,並輸出
操作後的結果
'''from threading import thread
import time
def plus(): # 帶乙個執行緒函式
print('--------子執行緒1開始--------')
global g_num # 定義全域性變數
g_num += 50 #全域性變數值增加50
print('g_num is %d' % g_num)
print('--------子執行緒1結束--------')
def minus(): # 第二個執行緒函式
time.sleep(1) #休眠1秒
print('--------子執行緒2開始--------')
global g_num # 定義全域性變數
g_num -= 50 # 全域性變數值減少50
print('g_num is %d' % g_num)
print('--------子執行緒2結束--------')
g_num = 100 # 定義乙個全域性變數
if __name__ == '__main__':
print('--------主線程開始--------')
print('g_num is %d' % g_num)
t1 = thread(target=plus) # 例項化執行緒t1
t2 = thread(target=minus) # 例項化執行緒t2
t1.start() # 開啟執行緒1
t2.start() # 開啟執行緒2
t1.join() # 等待執行緒1結束
t2.join() # 等待執行緒2結束
print('--------主線程結束--------')
上述**中,定義乙個全域性變數g_num的值是100,然後建立2個執行緒,乙個執行緒將g_num的值增加50,乙個執行緒將g_num的值減少50,如果g_num的最終結果是100,則說明執行緒之間可以共享資料。
從例子來看,在乙個程序內的所有執行緒共享全域性變數,能夠在不使用其它方式的前提下完成多執行緒之間的資料共享。
程序通訊方式 與 執行緒通訊方式
程序通訊方式 與 執行緒通訊方式 程序通訊方式 7種 管道pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。命名管道fifo 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊息佇列messagequeue...
程序與執行緒的區別 程序的通訊方式 執行緒的通訊方式
程序與執行緒的區別 通俗的解釋 乙個系統執行著很多程序,可以比喻為一條馬路上有很多馬車 不同的程序可以理解為不同的馬車 而同一輛馬車可以有很多匹馬來拉 這些馬就是執行緒 假設道路的寬度恰好可以通過一輛馬車 道路可以認為是臨界資源 那麼馬車成為分配資源的最小單位 程序 而同乙個馬車被很多匹馬驅動 執行...
初探 程序通訊與執行緒同步
不推薦使用signal 介面,推薦使用sigacton 相關介面 訊號集處理函式 int sigemptyset sigset t set int sigfillset sigset t set int sigdelset sigset t set,int signo int sigmember s...