I have been trying to find a good way to implement synchronisation in Python. Is the following code alright? If no, then what is wrong with it and how can I improve it?
import threading
class BookingService(threading.Thread):
    # so lock remains static to the class and would be same for all the threads
    lock = None
    
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.name = name
    
        if BookingService.lock == None:
            BookingService.lock = threading.Lock()
    
    def book(self):
    
        with BookingService.lock:
            print("BOOKED! for",self.name)
b1 = BookingService("b1")
b2 = BookingService("b2")
b1.book()
b2.book()
Read about threading module and various ways by which we can do it.
