Discuss / Python / 感觉就是把线程需要共有的资源私有化了,不是很体会到它的强大之处,后面用到再说

感觉就是把线程需要共有的资源私有化了,不是很体会到它的强大之处,后面用到再说

Topic source

Juice-Dreamer

#1 Created at ... [Delete] [Delete and Lock User]
thread_local=threading.local() #定义了一个全局变量 但是每个线程都是独立的一份,不影响这个

def hello():
    '''
    实现多个同学同时打招呼
    '''
    name=thread_local.name
    print('大家好,我是%s'% name)
def self_introduction(name):
    '''
    自我介绍的时候,调用hello()
    '''
    thread_local.name=name
    hello()
if __name__=='__main__':
    print('自我介绍开始')
    xm=threading.Thread(target=self_introduction,args=('小明',))
    zs=threading.Thread(target=self_introduction,args=('张三',))
    ls=threading.Thread(target=self_introduction,args=('李四',))
    xm.start()
    zs.start()
    ls.start()
    xm.join()
    zs.join()
    ls.join()
    print('自我介绍结束')
自我介绍开始
大家好,我是小明
大家好,我是张三
大家好,我是李四
自我介绍结束

right-chen

#2 Created at ... [Delete] [Delete and Lock User]

这个案例挺简单,具象

秦墨Cris

#3 Created at ... [Delete] [Delete and Lock User]
import threading# thread_local=threading.local() #定义了一个全局变量 但是每个线程都是独立的一份,不影响这个def hello(name):    '''    实现多个同学同时打招呼    '''    # name=thread_local.name    print('大家好,我是%s'% name)def self_introduction(name):    '''    自我介绍的时候,调用hello()    '''    # thread_local.name=name    hello(name)if __name__=='__main__':    print('自我介绍开始')    xm=threading.Thread(target=self_introduction,args=('小明',))    zs=threading.Thread(target=self_introduction,args=('张三',))    ls=threading.Thread(target=self_introduction,args=('李四',))    xm.start()    zs.start()    ls.start()    xm.join()    zs.join()    ls.join()    print('自我介绍结束')

你好,我改成这样的形式也能跑出同样的结果,这样子有什么不同呢。实在是想不明白求指教

李_超

#4 Created at ... [Delete] [Delete and Lock User]

很形象谢谢


  • 1

Reply