多執行緒共享全域性變數(執行緒間通訊)

2021-10-04 19:09:57 字數 1673 閱讀 2067

修改全域性變數一定需要加global嗎?

num =

100lis =[11

,22]def

demo()

:global num

num +=

100def

demo1()

:33)# 未修改指向 只是修改了指向空間的資料 不用加global

defdemo2()

:global lis

lis = lis +[44

]# 修改了指向 要加上global

print

(num)

# 100

demo(

)print

(num)

# 200

# demo1()

demo2(

)print

(lis)

# [11, 22, 44]

多執行緒共享全域性變數

def

demo1()

:global num

num +=

1print

("demo1---%d"

% num)

defdemo2()

:print

("demo2---%d"

% num)

defmain()

: t1 = threading.thread(target=demo1)

t2 = threading.thread(target=demo2)

t1.start(

) time.sleep(1)

t2.start(

) time.sleep(1)

print

("main----%d"

% num)

if __name__ ==

'__main__'

: main(

)

執行結果:101

多執行緒引數

import threading

import time

num =[11

,22]def

demo1

(num):33

)print

("demo1---%s"

%str

(num)

)def

demo2

(num)

:print

("demo2---%s"

%str

(num)

)def

main()

: t1 = threading.thread(target=demo1,args=

(num,))

t2 = threading.thread(target=demo2,args=

(num,))

t1.start(

) time.sleep(1)

t2.start(

) time.sleep(1)

print

("main----%s"

%str

(num)

)if __name__ ==

'__main__'

: main(

)

多執行緒共享變數 多執行緒共享全域性變數

1.多執行緒的執行順序是無序的 像2個人賽跑,乙個先跑乙個後跑,但根據每個人跑的速度不一樣,跑一半,二者可能跑在一起去了。2.又因為多執行緒是共享乙個全域性變數的,就導致資料容易被弄髒 假如老闆讓兩個員工寫兩個主題ppt,若這兩個人沒商量好,都做了同乙個主題的ppt,導致不但速度很慢,且這個ppt有...

7 多執行緒 全域性變數 共享全域性變數

多執行緒 全域性變數 共享全域性變數 多執行緒可以對全域性變數進行修改,修改後的結果會影響下乙個執行緒 程序不可以共享全域性變數,子程序是複製父程序的全域性變數,修改後互不影響 from threading import thread import time,random g num 100 def...

多執行緒 共享全域性變數問題

多執行緒 共享全域性變數問題 多執行緒開發可能遇到的問題 假設兩個執行緒t1和t2都要對全域性變數g num 預設是0 進行加1運算,t1和t2都各對g num加10次,g num的最終的結果應該為20。但是由於是多執行緒同時操作,有可能出現下面情況 在g num 0時,t1取得g num 0。此時...