多线程-共享全局变量(python版)

来源:互联网 发布:逆战刷箱子淘宝 编辑:程序博客网 时间:2024/05/21 18:35

多线程-共享全局变量
from threading import Threadimport timeg_num = 100def 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 Threadimport timedef 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]


总结:

  • 在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好)
  • 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)

阅读全文
0 0
原创粉丝点击