博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 多线程笔记(3)-- 线程的私有命名空间
阅读量:6452 次
发布时间:2019-06-23

本文共 1034 字,大约阅读时间需要 3 分钟。

线程的私有命名空间实现:

  threading_namespace = threading.local()

 

import threadingimport timeimport randomthreading_namespace = threading.local() # 命名空间def print_country():    thread_name = threading.current_thread().getName()    country = threading_namespace.country      # 获取变量    print('{}  {}'.format(thread_name, country))def my_func(country):    threading_namespace.country = country  # 设置变量        for i in range(4):        time.sleep(random.randrange(1,7))        print_country()        if __name__ == '__main__':        countries = ['America','China','Jappen','Russia']        threads = []    for country in countries:        threads.append(threading.Thread(target= my_func, args=(country,)))    for t in threads:        t.start()            for t in threads:        t.join()

 

语句

  threading_namespace = threading.local()

相当于给每个线程定义了各自的命名空间

 

函数 print_country() 内部对变量 country 进行了操作。

1. 如果不用 threading.local(),那么就需要给它传入一个参数 country,不同的线程参数值不一样!

2. 使用 threading.local() 的好处是对函数 print_country() 不需要传参,直接从命名空间 threading_namespace 去获取变量:country

 

转载地址:http://anwzo.baihongyu.com/

你可能感兴趣的文章
android toast几种使用方法
查看>>
POJ 3264 Balanced Lineup ST算法
查看>>
C++——STL中三种顺序容器的简要差别
查看>>
栅栏加解密python实现(支持密钥加密)
查看>>
第八届河南省赛D.引水工程(kruthcra+prime)
查看>>
【转】JSP使用上传文件,并生产高清缩略图示例
查看>>
mysql半同步复制问题排查
查看>>
OnEraseBkgnd、OnPaint与画面重绘
查看>>
SpringMVC @RequestBody接收Json对象字符串
查看>>
JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记4
查看>>
C#技术------垃圾回收机制(GC)
查看>>
【转】eclipse -- the project was not built due to a resource exists with a different case...
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>
Struts2输入校验
查看>>
泛型与类型擦除
查看>>
struts2学习笔记--OGNL表达式1
查看>>
android 批量上传图片
查看>>
hdu2089(数位dp)
查看>>
Linux系统编程——进程调度浅析
查看>>