知識點:什麼叫共享全域性變數?
共享變數
1、下面用乙個簡單的**演示一下共享全域性變數:
#定義乙個全域性變數,建立倆個執行緒,通過執行緒1區改變這個全域性變數的值,你會發現執行緒2中的列印出來的全域性變數值是執行緒1修改過後的值
num = 100
deftest1():
global
num # 因為num是不可變型別的,所以要修改全域性變數的值必須加個global關鍵字才能修改它的值
num += 1
print('
test1:%d
'%num)
deftest2():
print('
test2:%d
'%num)
defmain():
t1 = threading.thread(target=test1)
t2 = threading.thread(target=test2)
t1.start()
t2.start()
print('
num的值為:%d
'%num)
if__name__ == '
__main__':
main()
執行結果如下:
test1:101
test2:101
num的值為:101
2、補充知識點:
當我們建立執行緒的時候,如:t1 = threading.thread(target=test1),我想往執行緒函式裡傳遞引數怎麼辦呢?只需t1 = threading.thread(target=test1,args=(需要傳遞的引數,)),args必須是乙個元祖,以逗號隔開,看下面的例子:
importthreading
deftest1(temp):
修改傳遞過來的列表
print('
test1-num:%s
' %str(temp))
deftest2(temp):
print('
test2-num:%s
' %str(temp))
num = [11, 22]
defmain():
t1 = threading.thread(target=test1, args=(num,)) #
將num傳遞給執行緒函式test1,這裡args是乙個元祖,逗號一定要寫
t2 = threading.thread(target=test2, args=(num,)) #
將num傳遞給執行緒函式test2
t1.start()
t2.start()
print(num)
執行結果如下:
test1-num:[11, 22, 33]
test2-num:[11, 22, 33]
[11, 22, 33]
JAVA 併發程式設計 多個執行緒之間共享資料(六)
1。假設每乙個執行緒執行的 同樣。能夠使用同乙個 runnable 物件,這個 runnable 物件中有那個共享資料,比如,賣票系統就能夠這麼做。2,假設每乙個執行緒執行的 不同。這時候須要用不同的 runnable 物件,比如,設計4個執行緒。當中兩個執行緒每次對j新增1。另外兩個執行緒對j每次...
執行緒學習筆記 4 執行緒之間通訊
子執行緒先迴圈10次,然後主線程迴圈100次,再子執行緒迴圈10次,主線程迴圈100次,就這樣迴圈往復50次。public class communtion01 start for intj 1 j 50 j class bussiness catch interruptedexception e ...
Python 中多個執行緒之間是共享全域性變數的
首先我們來回憶下在函式中修改全域性變數的情況。在乙個函式中,對全域性變數進行修改的時候,到底是否需要使用 global 進行說明,要看是否對全域性變數的執行指向進行了修改。如果修改了執行指向,即讓全域性變數指向了乙個新的地方,那麼必須使用 global。如果僅僅是修改了指向的空間中的資料,此時不是必...