Thread Safety in Python's dictionary
dictionary, multithreading, python, thread-safety
Solution
Python's built-in structures are thread-safe for single operations, but it can sometimes be hard to see where a statement really becomes multiple operations.
Your code should be safe. Keep in mind: a lock here will add almost no overhead, and will give you peace of mind.
https://web.archive.org/web/20201108091210/http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm has more details.
Problem
I have a class which holds a dictionary ``` class OrderBook: orders = {'Restaurant1': None, 'Restaurant2': None, 'Restaurant3': None, 'Restaurant4': None} @staticmethod def addOrder(restaurant_name, orders): OrderBook.orders[restaurant_name] = orders ``` And I am running 4 threads (one for each restaurant) that call the method `OrderBook.addOrder`. Here is the function ran by each thread: ``` def addOrders(restaurant_name): #creates orders ... OrderBook.addOrder(restaurant_name, orders) ``` Is this safe, or do I have to use a lock before calling `addOrder`?