当前位置: Python基础教程 > 15-多任务-多线程 > 阅读正文

python线程共享变量

2021.7.4.   427 次   602字

python在调用threading创建线程时, 可以指定参数, 且可以共享变量

共享变量实例

共享的变量, 应该是全局变量

import threading
import time


def test1(list):
    list.append(33)
    print("test1----" + str(list))


def test2(list):
    print("test2---" + str(list))


g_nums = [11, 22]


def main():
    # target指定方法, args指定参数, 必须是元组形式
    t1 = threading.Thread(target=test1, args=(g_nums,))
    t2 = threading.Thread(target=test2, args=(g_nums,))

    t1.start()
    time.sleep(1)

    t2.start()
    time.sleep(1)

    print("main--" + str(g_nums))


if __name__ == "__main__":
    main()

共享变量, 可能导致冲突, ( 就像全局变量的不安全问题, 不知道在哪就被改变了), 例如

# 多个线程同时a+=1

a += 1 可以翻译为多个步骤
    s = a+1     # 在执行a+1后, 时间片结束, 未赋值给a, 临时存储为s
    #  另一个线程执行了a+=1, 此时a的值已经改变
    a = s        # 又回到当前线程, 把 s 赋值给a显然就不合理

下一小节, 将学习同步, 线程锁等知识, 解决线程不安全问题

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群