Python多线程共享资源

Python多线程共享资源教程

因为 线程 是进程的执行单元,所以在同一个进程中的多线程是可以共享系统资源的。

案例

多线程共享全局变量

同一进程的多个线程,可以共享进程的全局变量

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()

程序运行后,控制台输出如下:

08 python线程共享资源.png

首先,我们定义了一个 全局变量 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 的共享资源。