我是新來的Python,請耐心等待我的問題。訪問線程在不同模塊中的本地對象 - 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中配置。所以我試圖實例化每個線程的記錄器,並設置線程本地存儲,然後可以在其他模塊中訪問。
我在做什麼錯?我以此問題爲例Thread local storage in Python
太棒了!在我的情況下,我需要訪問存儲在多個地方的不同模塊中的本地線程中的對象。我想避免將它作爲參數傳遞,所以看起來線程本地應該適合我的場景。 – RandomQuestion