多线程执行同一任务,不共享局部变量

Posted fry-hell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程执行同一任务,不共享局部变量相关的知识,希望对你有一定的参考价值。

多线程执行同一任务,不共享局部变量

一、 代码展示

import threading
import time


# 多线程执行同一任务时,局部变量是不共享的
def sum_num():
    num = 0
    i = 1
    print("我进来了...")
    time.sleep(1)
    while i <= 20000000:
        num += 1
        i += 1
    print("%s:%d" % (threading.Thread.name, num))


def main():
    t1 = threading.Thread(target=sum_num)
    t2 = threading.Thread(target=sum_num)

    t1.start()
    t2.start()


if __name__ == "__main__":
    main()

运行结果

我进来了...
我进来了...
<property object at 0x000002221D4F7E08>:20000000
<property object at 0x000002221D4F7E08>:20000000

以上是关于多线程执行同一任务,不共享局部变量的主要内容,如果未能解决你的问题,请参考以下文章

多线程调用同一个方法,局部变量会共享吗

线程

gevent如何保证多个协程之间不共享同一个线程局部变量

多线程

java多线程执行任务,处理共享成员变量的安全问题

多个用户访问同一段代码