赞
赏
因为 线程 是进程的执行单元,所以在同一个进程中的多线程是可以共享系统资源的。
同一进程的多个线程,可以共享进程的全局变量
import threading
g_num = 100
def handler_incry():
global g_num
for i in range(2):
g_num += 1
print("in handler_incry g_num is : %d" % g_num)
def handler_decry():
global g_num
for i in range(2):
g_num -= 1
print("in handler_decry g_num is : %d" % g_num)
def main():
print("嗨客网(www.haicoder.net)")
t1 = threading.Thread(target=handler_incry)
t1.start()
t2 = threading.Thread(target=handler_decry)
t2.start()
if __name__ == '__main__':
main()
程序运行后,控制台输出如下:
首先,我们定义了一个 全局变量 g_num 并赋初值为 100,接着我们在主线程里创建了两个子线程,分别为 t1 和 t2。
在子线程 t1 和 t2 的线程处理函数里,我们都使用 global 关键字声明在线程处理函数里使用全局变量 g_num,同时,在线程处理函数里对全局变量进行了增减操作。
因为,子线程 t1 负责将全局变量 g_num 的值加三次,而子线程 t2 负责将全局变量 g_num 的值减三次,因此,最终运行完毕,全局变量 g_num 的值还是初值 100。
我们在两个子线程里面实现了对全局变量 g_num 的操作,即全局变量 g_num 是子线程 t1 和 t2 的共享资源。
文章目录