執行緒的全域性變數

2021-08-27 11:43:50 字數 1164 閱讀 5226

from threading import thread

import time

g_num = 100

defwork1

():global g_num

for i in range(3):

g_num += 1

print("----in work1, g_num is %d---"%g_num)

defwork2

():global g_num

print("----in work2, g_num is %d---"%g_num)

print("---執行緒建立之前g_num is %d---"%g_num)

t1 = thread(target=work1)

t1.start()

#延時一會,保證t1執行緒中的事情做完

time.sleep(1)

t2 = thread(target=work2)

t2.start()

輸出:

---執行緒建立之前g_num is 100---

----in work1, g_num is 103---

----in work2, g_num is 103---

用列表方式傳遞執行緒

from threading import thread

import time

defwork1

(name):

print('新增後為:',name)

defwork2

(name):

time.sleep(1)

print('是否和work1相同:',name)

num =['小明,老李']

t1=thread(target=work1,args=(num,))

t1.start()

t2=thread(target=work2,args=(num,))

t2.start()

總結:

在乙個程序內的所有執行緒共享全域性變數,能夠在不適用其他方式的前提下完成多執行緒之間的資料共享(這點要比多程序要好)

缺點就是,執行緒是對全域性變數隨意遂改可能造成多執行緒之間對全域性變數的混亂(即執行緒非安全)重點內容

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

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

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...

全域性變數和靜態全域性變數

全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...