如何在Python中锁定特定对象以提供竞争条件?

如何在Python中锁定特定对象以提供竞争条件?,python,multithreading,locking,semaphore,race-condition,Python,Multithreading,Locking,Semaphore,Race Condition,我正在尝试使用Python为机器人实现一个API。机器人拥有大量的motor对象,这些对象在motor类中实现。有一个叫做moveMotor的功能,它在线程中运行 """ Motor Class """ class Motor: def __init__(self, motor_id): """ @param motor_id: Motor Identity @type motor_id: int """

我正在尝试使用Python为机器人实现一个API。机器人拥有大量的motor对象,这些对象在motor类中实现。有一个叫做moveMotor的功能,它在线程中运行

""" Motor Class """
class Motor:

    def __init__(self, motor_id):
        """
        @param motor_id: Motor Identity
        @type motor_id: int
        """
        self.__motor_id = motor_id
        self.__motorState = "r"

        def moveMotor(self):
            thread = MotorThread(self)
            thread.start()

        def run(self):      
        print("Motor starts...")
        i = 0
        while(i < 3):
            print("Wrrrmmmmmmmmmm")
            time.sleep(1)
            i+=1
“电机类”
电机等级:
def u u初始(自身,电机id):
"""
@参数电机标识:电机标识
@电机类型标识:int
"""
自。\电机\u id=电机\u id
self.\uu motorState=“r”
def移动马达(自):
线程=电机线程(自)
thread.start()
def运行(自):
打印(“电机启动…”)
i=0
而(i<3):
打印(“wrrrmmmmmm”)
时间。睡眠(1)
i+=1
我的问题是,当一个特定的马达在使用时,我找不到实现锁或信号灯的可能性,它只拒绝访问。 因此,当马达1移动马达时,马达2也可以移动马达。但如果有另一个线程调用马达1移动,它必须等待

我在Motor类和MotorThread类中尝试了
lock=threading.lock()
lock=threading.Semaphore()
,并且获得并发布了,是的,从现在开始,到处都是,以进行测试。但我找不到解决办法


谢谢,我希望有人能帮助我。

motor类上的实例锁可以正常工作。motor类上的实例锁可以正常工作。