# threading.local变量使用, 其实就是类似c中的线程私有变量
import threading
private_var = threading.local() #类似字典变量
class MyThread(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self, name=name)
def run(self):
print(f"{self.name}: before private var:{private_var.__dict__}")
private_var.name = self.name
private_var.value = self.is_alive()
print(f"{self.name}: after private var:{private_var.__dict__}")
if __name__ == "__main__":
private_var.name = "main_thread"
private_var.value = "main_thread value"
print(private_var.__dict__)
t = MyThread("a")
t.start()
t.join()
t1 = MyThread("b")
t1.start()
t1.join()
output:
{‘name’: ‘main_thread’, ‘value’: ‘main_thread value’}
a: before private var:{}
a: after private var:{‘name’: ‘a’, ‘value’: True}
b: before private var:{}
b: after private var:{‘name’: ‘b’, ‘value’: True}