### 多線程-共享全局變量
~~~
from threading import Thread
import time
g_num = 100
def work1():
global g_num
for i in range(3):
g_num += 1
print("----in work1, g_num is %d---"%g_num)
def work2():
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
def work1(nums):
nums.append(44)
print("----in work1---",nums)
def work2(nums):
#延時一會,保證t1線程中的事情做完
time.sleep(1)
print("----in work2---",nums)
g_nums = [11,22,33]
t1 = Thread(target=work1, args=(g_nums,))
t1.start()
t2 = Thread(target=work2, args=(g_nums,))
t2.start()
~~~
運行結果:
~~~
----in work1--- [11, 22, 33, 44]
----in work2--- [11, 22, 33, 44]
~~~
### 總結:
在一個進程內的所有線程共享全局變量,能夠在不適用其他方式的前提下完成多線程之間的數據共享(這點要比多進程要好)
缺點就是,線程是對全局變量隨意遂改可能造成多線程之間對全局變量的混亂(即線程非安全