我是Python的新手,所以请忍受我的问题。
假设我的应用程序有一个名为message_printer
的模块,它只定义了一个print_message
函数来打印消息。现在在我的主文件中,我创建了两个在message_printer中调用print函数的线程。
我的问题是:如何为每个线程设置不同的消息并在message_printer中访问它?
message_printer:
import threading
threadLocal = threading.local()
def print_message():
name = getattr(threadLocal, 'name', None);
print name
return
主:
import threading
import message_printer
threadLocal = threading.local()
class Executor (threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
threadLocal.name = name
def run(self):
message_printer.print_message();
A = Executor("A");
A.start();
B = Executor("B");
B.start();
这只会输出None
和None
,而我期待A
和B
。我也尝试直接访问print_message函数中的threadLocal对象,但不起作用。
请注意,这只是一个例子。在我的应用程序中,确切的用例是用于日志记录。 Main启动了一堆调用其他模块的线程。我希望每个线程有一个不同的记录器(每个线程应该记录到它自己的文件),并且需要在Main中配置每个记录器。所以我试图为每个线程实例化记录器并设置在线程本地存储中,然后可以在其他模块中访问它。
我做错了什么?我是以Thread local storage in Python
为例说明这个问题的