python 字典是不是執行緒安全的

Anonymous596發表於2024-06-09

Python 字典(dict)物件本身不是執行緒安全的。在多執行緒環境下,對同一個字典物件的讀寫操作需要額外的同步機制來確保執行緒安全性。

如果需要在多執行緒環境下使用執行緒安全的字典,可以使用 collections.Counter 物件,它是執行緒安全的,或者使用 threading.local,它提供了執行緒區域性儲存的功能。另外,可以使用 multiprocessing.Manager 中的 dict 來建立一個可以在多執行緒之間安全共享的字典。

使用 multiprocessing.Manager 的一個例子:

from multiprocessing import Manager

def main():
    with Manager() as manager:
        shared_dict = manager.dict()
        
        # 在多執行緒環境中,可以使用 shared_dict 作為執行緒安全的字典
        # 例如,啟動一個執行緒來更新 shared_dict
        from threading import Thread
        def update_dict():
            shared_dict['key'] = 'value'
            print(shared_dict)
        
        thread = Thread(target=update_dict)
        thread.start()
        thread.join()

if __name__ == '__main__':
    main()

在這個例子中,shared_dict 是一個可以在多個執行緒中安全使用的字典。透過 Manager() 建立,它可以在多個執行緒之間共享,並且會自動處理同步和鎖機制。

(完)

相關文章