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? Continue reading...