python 多线程笔记(3)-- 线程的私有命名空间

简介: 线程的私有命名空间实现:   threading_namespace = threading.local()   import threading import time import random threading_namespace = threading.

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

  threading_namespace = threading.local()

 

import threading
import time
import random


threading_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

 

目录
相关文章
|
8天前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
26天前
|
API Python
探索Python中的多线程编程
探索Python中的多线程编程
39 5
|
5天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
12 0
|
6天前
|
并行计算 关系型数据库 MySQL
30天拿下Python之使用多线程
30天拿下Python之使用多线程
17 0
|
10天前
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
12 0
|
2月前
|
调度 Python
Python 中如何实现多线程?
【8月更文挑战第29天】
56 6
|
2月前
|
API C语言 C++
C调用Python之多线程与traceback打印
C调用Python之多线程与traceback打印
30 2
|
2月前
|
数据采集 Java Python
Python并发编程:多线程(threading模块)
Python是一门强大的编程语言,提供了多种并发编程方式,其中多线程是非常重要的一种。本文将详细介绍Python的threading模块,包括其基本用法、线程同步、线程池等,最后附上一个综合详细的例子并输出运行结果。
|
2月前
|
数据采集 Java Python
Python并发编程:多线程(threading模块)
本文详细介绍了Python的threading模块,包括线程的创建、线程同步、线程池的使用,并通过多个示例展示了如何在实际项目中应用这些技术。通过学习这些内容,您应该能够熟练掌握Python中的多线程编程,提高编写并发程序的能力。 多线程编程可以显著提高程序的并发性能,但也带来了新的挑战和问题。在使用多线程时,需要注意避免死锁、限制共享资源的访问,并尽量使用线程池来管理和控制线程。
|
2月前
|
安全 Java Python
Python 中的多线程
【8月更文挑战第24天】
17 0
下一篇
无影云桌面